Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die eingefügte ID nach einem SQL-INSERT-Befehl in C# MVC 4 ab?
Abrufen der eingefügten ID nach einem SQL INSERT in C# MVC 4
In diesem Artikel wird gezeigt, wie Sie Daten mit C# in eine MVC 4-Anwendung einfügen und die ID des neu eingefügten Datensatzes abrufen. Während ExecuteNonQuery
die Anzahl der betroffenen Zeilen angibt, erfordert das Erhalten der eingefügten ID einen anderen Ansatz.
Die einfachste Methode verwendet ExecuteScalar
. Das Ergebnis muss jedoch explizit in eine Ganzzahl umgewandelt werden:
<code class="language-csharp">int modified = (int)cmd.ExecuteScalar();</code>
Nach erfolgreicher Ausführung speichert modified
die neu generierte ID.
Für SQL Server 2005 und höher bietet die Nutzung des Schlüsselworts OUTPUT
innerhalb der INSERT
-Anweisung eine effizientere 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)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int modified = (int)cmd.ExecuteScalar(); if (con.State == System.Data.ConnectionState.Open) con.Close(); return modified; }</code>
Für ältere SQL Server-Versionen bietet die Funktion SCOPE_IDENTITY()
eine vergleichbare 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)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int modified = Convert.ToInt32(cmd.ExecuteScalar()); if (con.State == System.Data.ConnectionState.Open) con.Close(); return modified; }</code>
Diese Methoden stellen sicher, dass Sie unabhängig von Ihrer SQL Server-Version die ID des eingefügten Datensatzes genau abrufen. Denken Sie daran, potenzielle Ausnahmen in einer Produktionsumgebung angemessen zu behandeln.
Das obige ist der detaillierte Inhalt vonWie rufe ich die eingefügte ID nach einem SQL-INSERT-Befehl in C# MVC 4 ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!