Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die ID eines neu eingefügten Datensatzes in SQL Server mit C# MVC 4 ab?

Wie rufe ich die ID eines neu eingefügten Datensatzes in SQL Server mit C# MVC 4 ab?

Linda Hamilton
Linda HamiltonOriginal
2025-01-17 01:46:08936Durchsuche

How to Retrieve the ID of a Newly Inserted Record in SQL Server using C# MVC 4?

Abrufen der ID eines neu eingefügten SQL Server-Datensatzes mit C# MVC 4

Problem:

Wie fügt man mit C# in einer MVC 4-Anwendung Daten in eine SQL Server-Tabelle ein und erhält dann die ID des neu hinzugefügten Datensatzes?

Lösung:

Abhängig von Ihrer SQL Server-Version gibt es zwei Hauptansätze:

SQL Server 2005 und höher:

Die effizienteste Methode für SQL Server 2005 und nachfolgende Versionen nutzt die OUTPUT-Klausel:

<code class="language-csharp">using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na, Mem_Occ) OUTPUT INSERTED.ID VALUES (@na, @occ)", con))
{
    // ... parameter assignments for @na and @occ ...
    int newId = (int)cmd.ExecuteScalar();
    return newId;
}</code>

Diese einzelne SQL-Anweisung fügt die Daten ein und gibt sofort die neu generierte ID zurück.

Ältere SQL Server-Versionen (vor 2005):

Für ältere SQL Server-Versionen benötigen Sie eine zweiteilige Abfrage: eine INSERT-Anweisung, gefolgt von SCOPE_IDENTITY():

<code class="language-csharp">using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na, Mem_Occ) VALUES (@na, @occ); SELECT SCOPE_IDENTITY();", con))
{
    // ... parameter assignments for @na and @occ ...
    int newId = Convert.ToInt32(cmd.ExecuteScalar());
    return newId;
}</code>

Dieser Ansatz fügt zuerst die Daten ein und verwendet dann SCOPE_IDENTITY(), um die ID der zuletzt eingefügten Zeile innerhalb der aktuellen Sitzung und des aktuellen Bereichs abzurufen. Beachten Sie, dass SCOPE_IDENTITY() nur für die aktuelle Sitzung und den aktuellen Bereich funktioniert. Wenn also mehrere Einfügungen gleichzeitig erfolgen, kann es zu unerwarteten Ergebnissen kommen.

Denken Sie daran, Mem_Basic, Mem_Na und Mem_Occ durch Ihre tatsächlichen Tabellen- und Spaltennamen zu ersetzen. Stellen Sie außerdem sicher, dass die Parametrisierung korrekt ist, um Schwachstellen durch SQL-Injection zu vermeiden. Die // ...-Abschnitte geben an, wo Sie Ihren Parametriercode mit cmd.Parameters.AddWithValue(...).

hinzufügen sollten

Das obige ist der detaillierte Inhalt vonWie rufe ich die ID eines neu eingefügten Datensatzes in SQL Server mit C# MVC 4 ab?. 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