Mendapatkan ID yang Dimasukkan Selepas INSERT SQL dalam C# MVC 4
Artikel ini menunjukkan cara memasukkan data menggunakan C# dalam aplikasi MVC 4 dan mendapatkan semula ID rekod yang baru dimasukkan. Walaupun ExecuteNonQuery
menunjukkan bilangan baris yang terjejas, mendapatkan ID yang disisipkan memerlukan pendekatan yang berbeza.
Kaedah yang paling mudah digunakan ExecuteScalar
. Walau bagaimanapun, hasilnya perlu dihantar secara eksplisit ke integer:
<code class="language-csharp">int modified = (int)cmd.ExecuteScalar();</code>
Selepas pelaksanaan berjaya, modified
akan memegang ID yang baru dijana.
Untuk SQL Server 2005 dan lebih baru, memanfaatkan kata kunci OUTPUT
dalam pernyataan INSERT
menyediakan penyelesaian yang lebih cekap:
<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>
Untuk versi SQL Server yang lebih lama, fungsi SCOPE_IDENTITY()
menawarkan alternatif yang setanding:
<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>
Kaedah ini memastikan anda mendapatkan semula ID rekod yang dimasukkan dengan tepat, tanpa mengira versi SQL Server anda. Ingat untuk mengendalikan kemungkinan pengecualian dengan sewajarnya dalam persekitaran pengeluaran.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID yang Dimasukkan Selepas Perintah INSERT SQL dalam C# MVC 4?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!