Abrufen automatisch generierter IDs nach SQL INSERT in C#
Beim Hinzufügen von Daten zu einer SQL Server-Tabelle über C# ist das Abrufen der automatisch generierten ID des neuen Eintrags eine häufige Anforderung. In diesem Tutorial werden zwei Methoden demonstriert: die Verwendung der OUTPUT
-Klausel (SQL Server 2005 und höher) und der SCOPE_IDENTITY()
-Funktion (ältere Versionen).
Methode 1: OUTPUT
Klausel (SQL Server 2005 und höher)
Die OUTPUT
-Klausel bietet eine direkte Möglichkeit, die Spalte anzugeben, die die ID enthält:
<code class="language-csharp">using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) OUTPUT INSERTED.ID VALUES(@na,@occ)", con))</code>
Hier gibt INSERTED.ID
in der OUTPUT
-Klausel die ID der neu eingefügten Zeile zurück.
Methode 2: SCOPE_IDENTITY()
Funktion (ältere SQL Server-Versionen)
Für ältere SQL Server-Versionen ruft SCOPE_IDENTITY()
die ID der zuletzt eingefügten Zeile im aktuellen Bereich ab:
<code class="language-csharp">using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ); SELECT SCOPE_IDENTITY();", con))</code>
Diese Abfrage fügt die Daten ein und verwendet dann SCOPE_IDENTITY()
in einer separaten SELECT
-Anweisung, um die ID zu erhalten.
Zugriff auf die ID
Bei beiden Methoden wird auf die generierte ID mit ExecuteScalar()
und Typumwandlung zugegriffen:
<code class="language-csharp">int newId = (int)cmd.ExecuteScalar();</code>
Diese Technik gewährleistet einen effizienten Abruf der neu eingefügten Datensatz-ID und bietet Kompatibilität zwischen verschiedenen SQL Server-Versionen.
Das obige ist der detaillierte Inhalt vonWie rufe ich die eingefügte ID nach einem SQL-INSERT-Befehl in C# ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!