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

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

DDD
Freigeben: 2025-01-17 01:31:10
Original
348 Leute haben es durchsucht

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

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Ä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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage