Abrufen automatisch generierter IDs nach SQL INSERT in C#
Dieser Artikel befasst sich mit einer häufigen Herausforderung bei der C#-Programmierung: dem effizienten Abrufen der automatisch generierten ID nach dem Einfügen eines neuen Datensatzes in eine SQL Server-Datenbank. Wir werden verschiedene Methoden untersuchen und ihre Kompatibilität mit verschiedenen SQL Server-Versionen hervorheben.
Stellen Sie sich vor, Sie fügen Daten in eine Tabelle mit dem Namen „Mem_Basic“ ein und benötigen die neu generierte „ID“:
<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 ) { // ... (code to be added) }</code>
Eine Methode verwendet ExecuteScalar()
, aber dies ist nicht immer zuverlässig in allen SQL Server-Versionen:
<code class="language-csharp">int modified =(int)cmd.ExecuteScalar(); //Potentially unreliable in older SQL Server versions</code>
Für SQL Server 2005 und höher bietet die OUTPUT
-Klausel eine robuste Lösung:
<code class="language-csharp">using(SqlCommand cmd=new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) OUTPUT INSERTED.ID VALUES(@na,@occ)",con)) { // ... (rest of the code) }</code>
Für ältere SQL Server-Versionen (vor 2005) bietet SCOPE_IDENTITY()
jedoch eine zuverlässige Alternative:
<code class="language-csharp">using(SqlCommand cmd=new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ);SELECT SCOPE_IDENTITY();",con)) { // ... (rest of the code) }</code>
Diese Methoden stellen sicher, dass Entwickler die automatisch generierte ID nach einem SQL-INSERT
-Vorgang konsistent abrufen können, wodurch die Datenverwaltung in C#-Anwendungen verbessert wird.
Das obige ist der detaillierte Inhalt vonWie rufe ich automatisch generierte IDs nach einem SQL INSERT in C# ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!