Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan ID Rekod yang Baru Dimasukkan dalam SQL Server menggunakan C#?

Bagaimana untuk Mendapatkan ID Rekod yang Baru Dimasukkan dalam SQL Server menggunakan C#?

DDD
Lepaskan: 2025-01-17 01:31:10
asal
349 orang telah melayarinya

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

Mengambil ID Rekod yang Baru Dimasukkan dalam SQL Server dengan C#

Panduan ini menunjukkan cara untuk mendapatkan pengecam unik (ID) rekod yang baru dimasukkan dalam pangkalan data SQL Server menggunakan C# dalam aplikasi MVC 4 dengan cekap. Kod asal memerlukan pengubahsuaian untuk mencapai ini.

Kod Asal (Tidak Cekap):

<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>
Salin selepas log masuk

Kod Yang Diperbaiki (dengan Pengambilan ID):

Contoh berikut menunjukkan cara untuk mendapatkan ID yang baru dijana. Pilih kaedah yang sesuai untuk versi SQL Server anda:

SQL Server 2005 dan kemudian (Disyorkan):

Kaedah ini menggunakan klausa OUTPUT INSERTED.ID untuk prestasi optimum.

<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>
Salin selepas log masuk

Versi Pelayan SQL Lama (Pra-2005):

Pendekatan ini menggunakan SCOPE_IDENTITY() yang kurang cekap tetapi berfungsi pada versi lama.

<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>
Salin selepas log masuk

Kedua-dua kaedah yang disemak menggunakan ExecuteScalar untuk mendapatkan terus ID yang dijana. Kaedah SCOPE_IDENTITY() hanya boleh digunakan jika anda terhad kepada versi SQL Server yang lebih lama. Untuk SQL Server 2005 dan lebih baru, kaedah OUTPUT INSERTED.ID adalah jauh lebih cekap dan disyorkan.

Penting: Pastikan Mem_Basic lajur ID jadual anda ditakrifkan sebagai lajur IDENTITY dalam skema pangkalan data anda.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID Rekod yang Baru Dimasukkan dalam SQL Server menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan