Mendapatkan semula ID Rekod Pelayan SQL yang Baru Dimasukkan dengan C# MVC 4
Masalah:
Bagaimanakah anda memasukkan data ke dalam jadual SQL Server menggunakan C# dalam aplikasi MVC 4 dan kemudian mendapatkan ID rekod yang baru ditambah?
Penyelesaian:
Terdapat dua pendekatan utama, bergantung pada versi SQL Server anda:
SQL Server 2005 dan kemudian:
Kaedah yang paling berkesan untuk SQL Server 2005 dan versi seterusnya memanfaatkan klausa OUTPUT
:
<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>
Pernyataan SQL tunggal ini memasukkan data dan segera mengembalikan ID yang baru dijana.
Versi Pelayan SQL Lama (pra-2005):
Untuk versi SQL Server yang lebih lama, anda memerlukan pertanyaan dua bahagian: pernyataan INSERT
diikuti dengan 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>
Pendekatan ini mula-mula memasukkan data dan kemudian menggunakan SCOPE_IDENTITY()
untuk mendapatkan semula ID baris terakhir yang dimasukkan dalam sesi dan skop semasa. Ambil perhatian bahawa SCOPE_IDENTITY()
hanya berfungsi untuk sesi dan skop semasa, jadi jika berbilang sisipan berlaku serentak, anda mungkin mendapat hasil yang tidak dijangka.
Ingat untuk menggantikan Mem_Basic
, Mem_Na
dan Mem_Occ
dengan nama jadual dan lajur sebenar anda. Juga, pastikan parameterisasi yang betul untuk mengelakkan kelemahan suntikan SQL. Bahagian // ...
menunjukkan tempat anda harus menambah kod tugasan parameter anda menggunakan cmd.Parameters.AddWithValue(...)
.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID Rekod yang Baru Dimasukkan dalam Pelayan SQL menggunakan C# MVC 4?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!