Saya memasukkan beberapa nilai ke dalam tabel SQL menggunakan C # di MVC 4. Sebenarnya, saya ingin memasukkan nilai dan mengembalikan 'ID' dari catatan yang terakhir dimasukkan. Saya menggunakan kode berikut.
public class MemberBasicData
{
public int Id { get; set; }
public string Mem_NA { get; set; }
public string Mem_Occ { get; set; }
}
ID secara otomatis bertambah dalam database saat dimasukkan.
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;
}
}
}
Saya tahu ExecuteNonQuery
menunjukkan angka yang mempengaruhi baris. Daripada yang saya gunakan
int modified = (int)cmd.ExecuteScalar();
Tapi itu tidak berhasil. Tolong bantu saya untuk menyelesaikan ini. Dan apakah ada kode seperti cmd.ExecuteInsertAndGetID()
(tidak berfungsi dengan kode saya).
c#
sql
sql-server
asp.net-mvc-4
neel
sumber
sumber
InsertedID
?Jawaban:
Solusi berikut akan bekerja dengan sql server 2005 dan yang lebih baru. Anda dapat menggunakan keluaran untuk mendapatkan bidang yang diperlukan. Di tempat id Anda dapat menulis kunci Anda yang ingin Anda kembalikan. lakukan seperti ini
UNTUK SQL SERVER 2005 ke atas
UNTUK versi sebelumnya
sumber
select EmployeeId, * from Employees
Memerlukan fragmen ini dalam pernyataan sisipan:output inserted.EmployeeId
int modified = (int)cmd.ExecuteScalar();
ke int. Saya harus menggunakan Convert untuk mengubahnya menjadi int.int modified = Convert.ToInt32(cmd.ExecuteScalar());
Ubah kueri menjadi
Ini akan mengembalikan ID yang dimasukkan terakhir yang kemudian bisa Anda dapatkan
ExecuteScalar
sumber
SCOPE_IDENTITY()
.OUTPUT INSERTED
muncul di IIRC SQL Server 2008 dan telah menjadi cara yang disukai untuk melakukannya sejakProsedur tersimpan SQL Server:
Kode C #:
Saya harap ini akan membantu Anda ....
Anda juga dapat menggunakan ini jika Anda ingin ...
sumber
sumber
SCOPE_IDENTITY : Mengembalikan nilai identitas terakhir yang dimasukkan ke dalam kolom identitas dalam lingkup yang sama. untuk lebih jelasnya http://technet.microsoft.com/en-us/library/ms190315.aspx
sumber