Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich die eingefügte ID nach einem INSERT-Befehl in SQL Server?

Wie erhalte ich die eingefügte ID nach einem INSERT-Befehl in SQL Server?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-17 01:27:08462Durchsuche

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

Abrufen der neu eingefügten ID in SQL Server aus C#

In diesem Artikel wird gezeigt, wie Sie mit C# in einer MVC 4-Anwendung Daten in eine SQL Server-Tabelle einfügen und anschließend die ID des neu hinzugefügten Datensatzes abrufen. Wir untersuchen Methoden für SQL Server 2005 und höher sowie für Versionen vor 2005.

Methode 1: SQL Server 2005 und höher (mit OUTPUT INSERTED.ID)

Dieser Ansatz nutzt die OUTPUT-Klausel, eine hocheffiziente Methode zum Abrufen der eingefügten ID direkt in der Einfügeanweisung selbst.

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

Methode 2: SQL Server-Versionen vor 2005 (mit SCOPE_IDENTITY())

Bei älteren SQL Server-Versionen wird die Funktion SCOPE_IDENTITY() verwendet, um den letzten im aktuellen Bereich generierten Identitätswert abzurufen.

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

Beide Methoden erzielen das gleiche Ergebnis: die Rückgabe der ID des neu eingefügten Datensatzes. Die Auswahl hängt von Ihrer SQL Server-Version ab. Die OUTPUT-Klausel wird im Allgemeinen aufgrund ihrer Effizienz und Klarheit in neueren Versionen bevorzugt. Denken Sie daran, "Config.ConnectionString" durch Ihre tatsächliche Verbindungszeichenfolge zu ersetzen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich die eingefügte ID nach einem INSERT-Befehl in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn