Maison > base de données > tutoriel mysql > Comment récupérer l'ID d'un enregistrement nouvellement inséré dans SQL Server à l'aide de C# ?

Comment récupérer l'ID d'un enregistrement nouvellement inséré dans SQL Server à l'aide de C# ?

DDD
Libérer: 2025-01-17 01:31:10
original
348 Les gens l'ont consulté

How to Retrieve the ID of a Newly Inserted Record in SQL Server using C#?

Récupération des ID d'enregistrement nouvellement insérés dans SQL Server avec C#

Ce guide montre comment récupérer efficacement l'identifiant unique (ID) d'un enregistrement nouvellement inséré dans une base de données SQL Server à l'aide de C# dans une application MVC 4. Le code original nécessite une modification pour y parvenir.

Code original (inefficace) :

<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)",con))
        {
            cmd.Parameters.AddWithValue("@na", Mem_NA);
            cmd.Parameters.AddWithValue("@occ", Mem_Occ);
            con.Open();

            int modified = cmd.ExecuteNonQuery();

            if (con.State == System.Data.ConnectionState.Open) con.Close();
                return modified;
        }
    }
}</code>
Copier après la connexion

Code amélioré (avec récupération d'ID) :

Les exemples suivants montrent comment récupérer l'ID nouvellement généré. Choisissez la méthode appropriée à votre version de SQL Server :

SQL Server 2005 et versions ultérieures (recommandé) :

Cette méthode utilise la clause OUTPUT INSERTED.ID pour des performances optimales.

<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>
Copier après la connexion

Anciennes versions de SQL Server (avant 2005) :

Cette approche utilise SCOPE_IDENTITY() qui est moins efficace mais fonctionne sur les anciennes versions.

<code class="language-csharp">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>
Copier après la connexion

Les deux méthodes révisées utilisent ExecuteScalar pour récupérer directement l'ID généré. La méthode SCOPE_IDENTITY() ne doit être utilisée que si vous êtes limité aux anciennes versions de SQL Server. Pour SQL Server 2005 et versions ultérieures, la méthode OUTPUT INSERTED.ID est nettement plus efficace et recommandée.

Important : Assurez-vous que la colonne ID de votre table Mem_Basic est définie comme une colonne IDENTITY dans votre schéma de base de données.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal