Récupération de l'identifiant d'une ligne insérée en C#
Dans une table de base de données contenant un champ "ID" auto-incrémenté, obtention de l'ID d'une ligne récemment insérée s'avère être une tâche récurrente. Cela devient particulièrement crucial pour les opérations ultérieures dépendant de l'ID.
Dans votre cas, malgré l'exécution d'une commande d'insertion, la valeur de l'ID récupérée a systématiquement renvoyé zéro. Cet écart provient de l'utilisation de ExecuteScalar, qui récupère la première colonne de la première ligne renvoyée par la commande. Puisqu'aucune colonne spécifique n'est projetée, la valeur au premier index est récupérée. Cependant, les identifiants auto-incrémentés sont généralement générés après l'insertion de la commande, ce qui fait que la colonne ID ne contient initialement rien.
Pour résoudre ce problème, pensez à modifier votre code comme suit :
MySqlCommand comm = connect.CreateCommand(); comm.CommandText = insertStatement; // Set the insert statement comm.ExecuteNonQuery(); // Execute the command long id = comm.LastInsertedId; // Get the ID of the inserted item
La différence critique réside dans l'utilisation de ExecuteNonQuery, qui exécute spécifiquement l'instruction insert sans renvoyer de valeur. Par la suite, l'appel de LastInsertedId récupère directement la valeur de l'ID générée.
Cette approche s'aligne sur l'exigence de récupérer l'ID auto-incrémenté, éliminant ainsi le problème rencontré avec ExecuteScalar.
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!