Récupération des identifiants générés automatiquement après SQL INSERT en C#
Lors de l'ajout de données à une table SQL Server via C#, l'obtention de l'ID généré automatiquement de la nouvelle entrée est une exigence courante. Ce didacticiel présente deux méthodes : en utilisant la clause OUTPUT
(SQL Server 2005 et versions ultérieures) et la fonction SCOPE_IDENTITY()
(anciennes versions).
Méthode 1 : OUTPUT
Clause (SQL Server 2005 et versions ultérieures)
La clause OUTPUT
fournit un moyen direct de spécifier la colonne contenant l'ID :
<code class="language-csharp">using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) OUTPUT INSERTED.ID VALUES(@na,@occ)", con))</code>
Ici, INSERTED.ID
dans la clause OUTPUT
renvoie l'ID de la ligne nouvellement insérée.
Méthode 2 : SCOPE_IDENTITY()
Fonction (anciennes versions de SQL Server)
Pour les anciennes versions de SQL Server, SCOPE_IDENTITY()
récupère l'ID de la ligne la plus récemment insérée dans la portée actuelle :
<code class="language-csharp">using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ); SELECT SCOPE_IDENTITY();", con))</code>
Cette requête insère les données puis utilise SCOPE_IDENTITY()
dans une instruction SELECT
distincte pour obtenir l'ID.
Accès à l'identifiant
Dans les deux méthodes, l'ID généré est accessible à l'aide de ExecuteScalar()
et du transtypage :
<code class="language-csharp">int newId = (int)cmd.ExecuteScalar();</code>
Cette technique garantit une récupération efficace de l'ID de l'enregistrement nouvellement inséré, offrant une compatibilité entre les différentes versions de SQL Server.
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!