[Mono-list] SQLLite problem
Paul Johnson
paul at all-the-johnsons.co.uk
Thu Mar 14 14:48:11 UTC 2013
Hi,
I seem to be having a problem with inserting into my SQLLite database.
It is set up like this
I have the SQLLite.cs file referenced in a helper class that provides
the interface to the app (just to make my life simple really). This
helper class creates the table, deletes the table and does everything else.
I'm having an issue with two methods (both oddly at the same point). The
method looks like this
public void addBoyRecords(List<BoyRecords> br)
{
if (br.Count == 0)
return;
lock (this.dbLock)
{
using (SQLiteConnection sqlCon = new
SQLiteConnection(this.DBPath))
{
sqlCon.Execute(Constants.DBClauseSyncOff);
for (int m = 0; m < br.Count; ++m)
try
{
if (sqlCon.Execute("UPDATE BoyRecords SET " +
"ReplicationGuid=?, LkwdID=?,
MoneyID=?, AffiliationID=?, Affiliation1ID=?, DescriptionID=?,
Description1ID=?, TypeID=?, " +
"Type1ID=?, LastName=?, FirstName=?,
HebrewName=?, DateOfBirth=?, Calculated=?, Height=?, Address1=?,
Address2=?, " +
"Address3=?, City=?, State=?,
Country=?, Zip=?, Phone1=?, Phone2=?, FatherCell=?, MotherCell=?,
FatherEmailAddress=?, " +
"MotherEmailAddress=?, OwnAddress1=?,
OwnAddress2=?, OwnCityID=?, OwnState=?, OwnCountry=?, OwnHomePhone1=?, " +
"OwnCellPhone=?, OwnEmailAddress=?,
DateCameToYeshiva=?, HighSchool=?, Yeshiva1=?, Yeshiva2=?, Yeshiva3=?,
Working=?",
br [m].ReplicationGuid, br
[m].LkwdID, br [m].MoneyID, br [m].AffiliationID, br [m].Affiliation1ID,
br [m].DescriptionID,
br [m].Description1ID, br
[m].TypeID, br [m].Type1ID, br [m].LastName, br [m].FirstName, br
[m].HebrewName, br [m].DateOfBirth,
br [m].Calculated, br
[m].Height, br [m].Address1, br [m].Address2, br [m].Address3, br
[m].City, br [m].State, br [m].Country,
br [m].Zip, br [m].Phone1,
br [m].Phone2, br [m].FatherCell, br [m].MotherCell, br
[m].FatherEmailAddress,
br [m].MotherEmailAddress,
br [m].OwnAddress1, br [m].OwnAddress2, br [m].OwnCityID, br
[m].OwnState, br [m].OwnCountry,
br [m].OwnHomePhone1, br
[m].OwnCellPhone, br [m].OwnEmailAddress, br [m].DateCameToYeshiva, br
[m].HighSchool,
br [m].Yeshiva1, br
[m].Yeshiva2, br [m].Yeshiva3, br [m].Working) == 0)
sqlCon.Insert(br [m], typeof(BoyRecords));
if (sqlCon.Execute("UPDATE BoyRecords SET " +
"Job=?, College=?, ParentsLastName=?,
ParentsMaritalStatus=?, FathersName=?, FathersHebrewName=?,
FathersTitle=?, " +
"FathersOrigin=?, FathersJob=?,
FathersSchull=?, MothersName=?, MothersHebrewName=?, MothersTitle=?,
MothersMaiden=?, " +
"MothersOrigin=?, MothersJob=?,
OrderInFamily=?, FamilySize=?, Mechutanim=?, Siblings=?, References=?,
Notes=?, " +
"RoomMate1=?, RoomMate2=?, RoomMate3=?,
RoomMate4=?, NamePartner1=?, NamePartner2=?, RoshChaburah1=?,
RoshChaburah2=?, " +
"Seat1=?, Seat2=?, DateAdded=?,
Engaged=?, UpdateNo=? WHERE ReplicationGuid=?", br [m].Job, br
[m].College, br [m].ParentsLastName,
br [m].ParentsMaritalStatus,
br [m].FathersName, br [m].FathersHebrewName, br [m].FathersTitle, br
[m].FathersOrigin,
br [m].FathersJob, br
[m].FathersSchull, br [m].MothersName, br [m].MothersHebrewName, br
[m].MothersTitle, br [m].MothersMaiden,
br [m].MothersOrigin, br
[m].MothersJob, br [m].OrderInFamily, br [m].FamilySize, br
[m].Mechutanim, br [m].Siblings,
br [m].References, br
[m].Notes, br [m].RoomMate1, br [m].RoomMate2, br [m].RoomMate3, br
[m].RoomMate4, br [m].NamePartner1,
br [m].NamePartner2, br
[m].RoshChaburah1, br [m].RoshChaburah2, br [m].Seat1, br [m].Seat2, br
[m].DateAdded,
br [m].Engaged, br
[m].UpdateNo, br [m].ReplicationGuid) == 0)
sqlCon.Insert(br [m], typeof(BoyRecords));
} catch (Exception ex)
{
#if DEBUG
Console.WriteLine("Error in addBoyRecords :
{0}-{1}", ex.Message, ex.StackTrace);
#endif
sqlCon.Rollback();
}
}
}
}
The list is provided from an XML file (I managed to sort that one from
yesterday by using reader.Depth - quick and easy!).
No matter what I do, I always get a syntax error near "References". I've
checked all of the inputs and they are the correct type and non-null. My
thinking was that SQLLite doesn't like more than so many parameters
going in at once (which is why I've split the input). That made no
difference. Next was that the XML string being passed in was causing an
issue. In the XML for <References> is R', so I've replaced that
with ' using reader.Value.Replace("'", "'"); - still I get the same
error.
The XML file is using UTF-8. Do I need to do anything within my code to
ensure the strings being fed into the database are also UTF-8?
Any clues here would be useful!
Paul
--
"Space," it says, "is big. Really big. You just won't believe how
vastly, hugely, mindbogglingly big it is. I mean, you may think it's a
long way down the road to the chemist's, but that's just peanuts to
space, listen..."
Hitch Hikers Guide to the Galaxy, a truly remarkable book!
More information about the Mono-list
mailing list