Maison > base de données > tutoriel mysql > Pourquoi ExecuteScalar() renvoie-t-il 0 lors de la récupération de l'ID d'une ligne insérée en C# ?

Pourquoi ExecuteScalar() renvoie-t-il 0 lors de la récupération de l'ID d'une ligne insérée en C# ?

Linda Hamilton
Libérer: 2024-11-08 09:48:02
original
457 Les gens l'ont consulté

Why Does ExecuteScalar() Return 0 When Retrieving the ID of an Inserted Row in C#?

Récupération de l'ID d'une ligne insérée en C#

Lors de l'insertion de nouvelles données dans une table de base de données, capture de l'ID de la ligne nouvellement générée peut être indispensable pour un traitement ultérieur. Cet article explore un problème courant où l'utilisation d'ExecuteScalar() pour obtenir l'ID de ligne inséré renvoie systématiquement 0, même si l'ID réel est différent de zéro.

Le bloc de code fourni :

MySqlCommand comm = connect.CreateCommand();
comm.CommandText = insertInvoice;
comm.CommandText += "\'" + invoiceDate.ToString("yyyy:MM:dd hh:mm:ss") + "\', " + bookFee + ", " + adminFee + ", " + totalFee + ", " + customerID +  ")";
int id = Convert.ToInt32(comm.ExecuteScalar());
Copier après la connexion

tente d'exécuter une instruction d'insertion et de récupérer l'ID généré à l'aide de ExecuteScalar(). Cependant, cette approche échoue généralement en raison de l'imprévisibilité de la méthode ExecuteScalar() dans des contextes non scalaires.

Pour récupérer de manière fiable l'ID de la ligne insérée, le code suivant peut être utilisé :

MySqlCommand comm = connect.CreateCommand();
comm.CommandText = insertStatement;
comm.ExecuteNonQuery();
long id = comm.LastInsertedId;
Copier après la connexion

Après avoir exécuté l'instruction insert avec ExecuteNonQuery(), nous pouvons accéder à la propriété LastInsertedId de l'objet de commande, qui fournit l'ID généré pour la ligne récemment insérée. Cette méthode est recommandée pour récupérer de manière fiable l'ID de ligne inséré.

De plus, la syntaxe MySQL pour récupérer l'ID inséré (last_insert_id()) n'est pas prise en charge en C#. Au lieu de cela, LastInsertedId peut être utilisé dans le cadre de l'objet MySqlCommand pour obtenir l'ID généré.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal