Maison >développement back-end >C++ >Comment obtenir l'ID inséré après une insertion SQL en utilisant C# dans MVC 4 ?

Comment obtenir l'ID inséré après une insertion SQL en utilisant C# dans MVC 4 ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-17 22:05:13881parcourir

How to Get the Inserted ID After an SQL Insert Using C# in MVC 4?

Récupération de l'ID nouvellement inséré suite à une opération d'insertion SQL en C# (MVC 4)

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é.

Exemple de code : insertion de données et récupération de l'ID

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!

Déclaration:
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