Thanks
The connection was indeed getting closed. On further debugging, I found
this is because the SQL created by the designer for the update command requires
a matching of all fields in the WHERE clause. Below are some examples from the
designer.cs file:
this._adapter.UpdateCommand.CommandText = @"UPDATE
[main].[sqlite_default_schema].[Assignment] SET [Course_Id] = @Course_Id,
[Name] = @Name, [Description] = @Description, [Pointspossible] =
@Pointspossible, [Downloadpath] = @Downloadpath, [AssignedDate] =
@AssignedDate, [DueDate] = @DueDate, [CreateDate] = @CreateDate WHERE
(([ASSIGNMENT_ID] = @ORIGINAL_ASSIGNMENT_ID) AND ([COURSE_ID] =
@ORIGINAL_COURSE_ID) AND ([NAME] = @ORIGINAL_NAME) AND ((@ISNULL_DESCRIPTION =
1 AND [DESCRIPTION] IS NULL) OR ([DESCRIPTION] = @ORIGINAL_DESCRIPTION)) AND
([POINTSPOSSIBLE] = @ORIGINAL_POINTSPOSSIBLE) AND ((@ISNULL_DOWNLOADPATH = 1
AND [DOWNLOADPATH] IS NULL) OR ([DOWNLOADPATH] = @ORIGINAL_DOWNLOADPATH)) AND
([ASSIGNEDDATE] = @ORIGINAL_ASSIGNEDDATE) AND ([DUEDATE] = @ORIGINAL_DUEDATE)
AND ([CREATEDATE] = @ORIGINAL_CREATEDATE))";
this._adapter.UpdateCommand.CommandText = @"UPDATE
[main].[sqlite_default_schema].[Course] SET [Name] = @Name, [Description] =
@Description WHERE (([COURSE_ID] = @ORIGINAL_COURSE_ID) AND ([NAME] =
@ORIGINAL_NAME) AND ((@ISNULL_DESCRIPTION = 1 AND [DESCRIPTION] IS NULL) OR
([DESCRIPTION] = @ORIGINAL_DESCRIPTION)))";
When I removed the redundant matching columns, leaving only the primary
key, the error went away as expected. I believe that the extra conditions
generated in the UPDATE command are unusual.
So my question is: is this a bug or a feature in System.Data.SQLite
Thanks
Manish
-----Original Message-----
From: [email protected] [mailto:[email protected]]
On Behalf Of Joe Mistachkin
Sent: Monday, March 26, 2012 2:47 AM
To: 'General Discussion of SQLite Database'
Subject: Re: [sqlite] Concurrency violation: the UpdateCommand affected 0 of
the expected 1 records
Agrawal, Manish wrote:
>
> 1. Database connection not valid for getting number of changes
> At System.Data.SQLite.SQLiteConnection.get_Changes()
>
> 2. Database connection not valid for getting last insert rowid
> At System.Data.SQLite.SQLiteConnection.get_LastInsertRowId()
>
> 3. Database connection not valid for getting maximum memory used
> At System.Data.SQLite.SQLiteConnection.get_MemoryHighwater()
>
> 4. Database connection not valid for getting memory used
> At System.Data.SQLite.SQLiteConnection.get_MemoryUsed()
>
Those exceptions indicate that the connection has been closed somehow.
--
Joe Mistachkin
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users