Maison > base de données > tutoriel mysql > Comment obtenir l'ID inséré après une commande INSERT dans SQL Server ?

Comment obtenir l'ID inséré après une commande INSERT dans SQL Server ?

Mary-Kate Olsen
Libérer: 2025-01-17 01:27:08
original
461 Les gens l'ont consulté

How to Get the Inserted ID After an INSERT Command in SQL Server?

Récupération de l'ID nouvellement inséré dans SQL Server à partir de C#

Cet article montre comment insérer des données dans une table SQL Server à l'aide de C# dans une application MVC 4 et récupérer ensuite l'ID de l'enregistrement nouvellement ajouté. Nous explorerons les méthodes pour SQL Server 2005 et versions ultérieures, ainsi que pour les versions antérieures à 2005.

Méthode 1 : SQL Server 2005 et versions ultérieures (utilisation de OUTPUT INSERTED.ID)

Cette approche exploite la clause OUTPUT, une méthode très efficace pour récupérer l'ID inséré directement dans l'instruction d'insertion elle-même.

<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) 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();
            con.Close();
            return newId;
        }
    }
}</code>
Copier après la connexion

Méthode 2 : versions de SQL Server avant 2005 (à l'aide de SCOPE_IDENTITY())

Pour les anciennes versions de SQL Server, la fonction SCOPE_IDENTITY() est utilisée pour récupérer la dernière valeur d'identité générée dans la portée actuelle.

<code class="language-csharp">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());
            con.Close();
            return newId;
        }
    }
}</code>
Copier après la connexion

Les deux méthodes obtiennent le même résultat : renvoyer l'ID de l'enregistrement nouvellement inséré. Le choix dépend de votre version de SQL Server. La clause OUTPUT est généralement préférée pour son efficacité et sa clarté dans les versions plus récentes. 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!

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