J'essaie d'insérer une ligne et de récupérer l'identité de la nouvelle ligne avec quelque chose comme ceci: J'essaie d'exécuter les deux déclarations avec une seule invocation d'un objet DBCOMMAND en c # ... Cela ne semble pas fonctionner ou j'ai quelque chose de mal. P> J'ai lu que Compact Edition ne prend pas en charge l'exécution de plusieurs déclarations dans un lot ... mais j'ai aussi trouvé Ceci: P> Si vous souhaitez exécuter plusieurs requêtes simultanément, vous devez inclure un nouveau caractère de ligne pour chaque relevé et un point-virgule à la fin de chaque relevé. P>
blockQuote> source: http: // TechNet .microsoft.com / fr-US / US / Bibliothèque / BB896140 (SQL.110) .aspx P> Cela fonctionne-t-il ou non ... et si oui, que manque-t-il? P > (Je me rends compte que je peux exécuter deux commandes et cela fonctionne bien, mais je me demande si je manque quelque chose). P> P>
3 Réponses :
Cela ressemble à une erreur DOC, c'est l'inverse. Vous ne pouvez exécuter qu'une seule déclaration par appel exécutenonquery. P>
Surpris si une erreur DOC peut être répétée au moins 3 fois pour SQLCE 3.5 SP1 , 3.5 SP2 A >, et 4.0 ? J'ai vraiment confus.
Vous devez définir un paramètre de sortie pour obtenir une valeur d'identité
Êtes-vous sûr de cela? J'utilise dbcommand.exectescalar () et cela renvoie la nouvelle identité de l'identification des enregistrements. Il doit simplement être une commande séparée et non une lotte.
SQL Server Compact Edtion prend uniquement en charge une déclaration unique par commande. Lien
En outre, il semble que vous devez "sélectionner @@ identité" contre la même connexion ouverte que vous avez exécutée "insertion".
Après de nombreuses erreurs avec SQL-Server-CE CO> tels que la direction ne pouvait pas être émise, je l'ai eu pour fonctionner.
public static long GetIdentity(this IDbConnection connection)
{
var cmd = connection.CreateCommand();
cmd.CommandText = "SELECT @@IDENTITY";
cmd.CommandType = CommandType.Text;
var id = cmd.ExecuteScalar();
return (long)(decimal)id;
}
Que voulez-vous dire par "ne semble pas fonctionner" [sic]? Ce qui se produit? Avez-vous un message d'erreur?