J'ai une base de données SQL Server CE simple, en essayant de mettre à jour une ligne dans une table. La commande suivante fonctionne:SQL Server CE Problèmes de clause Where
UPDATE ConsoleUsage
SET TotalCircuits = 123
Mais les mises à jour de commande ci-dessus toutes les lignes, donc ce que je veux est la suivante:
UPDATE ConsoleUsage
SET TotalCircuits = 123
WHERE Index = 912
L'intention est de mettre à jour une seule ligne dans le tableau. Mais cette commande échoue, ce qui donne le message d'erreur cryptique (ici en utilisant le format proposé MS):
Code d'erreur: 80040e37
Message: [UPDATE ConsoleUsage SET TotalCircuits = 123 où l'indice = 912]
Err mineur. : 0
Source: Fournisseur de données ADO.NET SQL Server 2005 Mobile Edition
Err. Par. : Mise à jour ConsoleUsage SET TotalCircuits = 123 = où l'indice 912
La colonne « Index » est un index à la table, j'ai vérifié tous l'orthographe et j'ai essayé cette fois avec et sans cmd.CommandType = CommandType .TableDirect; et cmd.IndexName = "MainIndex";
Qu'est-ce qui me manque?
Mise à jour:. Essayé d'utiliser un autre champ dans la clause WHERE, cela a fonctionné. Il y a donc quelque chose qui ne va pas dans ma colonne "Index", que ce soit son nom ou son type - c'est une "clé primaire" (mais cela devrait-il être important?), Tapez smallint. – toml
Changez le nom "Index" en quelque chose d'autre ("Id" par exemple) et essayez. Est-ce le travail? – Sasha
J'ai ajouté une nouvelle colonne, nommée DateCode, les mêmes données que l'index mais pas une clé primaire, cela fonctionne maintenant. Je vais laisser Index en place puisque toutes les tables (je pense) doivent avoir une clé primaire. Pas inquiet pour un peu d'espace gaspillé, cette table n'a pas beaucoup de rangées. – toml