SQLite SQLiteDataAdapter et UpdateCommand
Bonjour
Encore besoin d'aide ...
Je n'arrive pas à comprendre le fonctionnement du SQLiteDataAdapter.
Voulant afficher dans DatagridView le résultat d'une requête avec un JOIN, je me suis trouvé" face à une erreur au moment de valider les données dans la base.
Citation:
System.Data.DBConcurrencyException*: 'Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.'
En cherchant sur le net, j'ai compris (peut-être à tort) que UpdateCommand ne peut pas faire la mise à jour à partir de ce genre de requête si j'utilise le SQLiteCommandBuilder.
J'ai donc décidé de faire ma propre requête d'update pour ne mettre à jour QUE la table principale utilisée dans la requête.
Mais j'obtiens toujours la même erreur alors que cette requête ne concerne qu'une seule table.
Voilà mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| adapter = new SQLiteDataAdapter();
// Requête qui ne pose pas de problème
//adapter.SelectCommand = new SQLiteCommand("select d.id, d.name, d.description from documents d", cnx);
// Requête qui déclenche l'erreur au moment de l'update.
adapter.SelectCommand = new SQLiteCommand("select g.name Groupe, d.name `Nom document`, d.description" +
" from documents d inner join groups g on d.group_id = g.id", cnx);
// Requête en UPDATE qui ne concerne que la table principale
adapter.UpdateCommand = new SQLiteCommand("update documents set name = @name, description = @description " +
"where id = @id", cnx);
adapter.UpdateCommand.Parameters.Add("@name", DbType.String, 100, "name");
adapter.UpdateCommand.Parameters.Add("@description", DbType.String, 100, "description");
var idParam = adapter.UpdateCommand.Parameters.Add("@id", DbType.Int32, 0, "id");
idParam.SourceVersion = DataRowVersion.Original;
table = new DataTable();
adapter.Fill(table);
_bindingSource.DataSource = table; |
Pourquoi cette requête déclenche l'erreur alors que je ne traite qu'une seule table ? :-(