Cet article montre comment insérer des données dans une table SQL Server à l'aide de C# dans une application MVC 4 et obtenir simultanément l'ID de l'enregistrement nouvellement inséré.
L'extrait de code suivant illustre comment y parvenir en utilisant deux approches différentes :
Méthode 1 : Utilisation de SCOPE_IDENTITY()
(Convient à SQL Server 2005 et versions ultérieures)
<code class="language-csharp">public class MemberBasicData { public int Id { get; set; } public string Mem_NA { get; set; } public string Mem_Occ { get; set; } } public int CreateNewMember(string Mem_NA, string Mem_Occ ) { using (SqlConnection con = new SqlConnection(Config.ConnectionString)) { using(SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ);SELECT SCOPE_IDENTITY();", con)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int newId = Convert.ToInt32(cmd.ExecuteScalar()); if (con.State == System.Data.ConnectionState.Open) con.Close(); return newId; } } }</code>
Méthode 2 : Utilisation de la OUTPUT
Clause (SQL Server 2005 et versions ultérieures)
Cette méthode est généralement privilégiée pour sa clarté et son efficacité.
<code class="language-csharp">using(SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) OUTPUT INSERTED.ID VALUES(@na,@occ)", con)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int newId = (int)cmd.ExecuteScalar(); if (con.State == System.Data.ConnectionState.Open) con.Close(); return newId; }</code>
Les deux méthodes obtiennent le même résultat : insérer des données et renvoyer l'ID nouvellement généré. La clause OUTPUT
est généralement considérée comme plus efficace et plus lisible. N'oubliez pas de remplacer Config.ConnectionString
par votre chaîne de connexion réelle.
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!