Abrufen neu eingefügter Datensatz-IDs in SQL Server mit C#
Diese Anleitung zeigt, wie Sie mithilfe von C# innerhalb einer MVC 4-Anwendung effizient die eindeutige Kennung (ID) eines neu eingefügten Datensatzes in einer SQL Server-Datenbank abrufen können. Um dies zu erreichen, muss der Originalcode geändert werden.
Originalcode (ineffizient):
<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>
Verbesserter Code (mit ID-Abruf):
Die folgenden Beispiele zeigen, wie die neu generierte ID abgerufen wird. Wählen Sie die für Ihre SQL Server-Version geeignete Methode:
SQL Server 2005 und höher (empfohlen):
Diese Methode verwendet die OUTPUT INSERTED.ID
-Klausel für optimale Leistung.
<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>
Ältere SQL Server-Versionen (vor 2005):
Dieser Ansatz verwendet SCOPE_IDENTITY()
, was weniger effizient ist, aber auf älteren Versionen funktioniert.
<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>
Beide überarbeiteten Methoden verwenden ExecuteScalar
, um die generierte ID direkt abzurufen. Die SCOPE_IDENTITY()
-Methode sollte nur verwendet werden, wenn Sie auf ältere SQL Server-Versionen beschränkt sind. Für SQL Server 2005 und höher ist die Methode OUTPUT INSERTED.ID
deutlich effizienter und wird empfohlen.
Wichtig: Stellen Sie sicher, dass die ID-Spalte Ihrer Mem_Basic
-Tabelle als IDENTITY
-Spalte in Ihrem Datenbankschema definiert ist.
Das obige ist der detaillierte Inhalt vonWie rufe ich mit C# die ID eines neu eingefügten Datensatzes in SQL Server ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!