Tôi có hàm sau thực thi truy vấn và trả về true thành công và sai về lỗi. Không, tôi muốn mở rộng phương thức sao cho mỗi truy vấn chèn được kích hoạt, lớp var insertId
chứa ID của hàng được chèn cuối cùng.C# + SQL Server ExecuteScalar() không trả về id được chèn cuối cùng
Vấn đề là insertId
luôn là 0, vì vậy bằng cách nào đó, executeScalar()
không trả lại ID.
Bất kỳ ý tưởng nào? Hoặc các giải pháp khác để có được ID của truy vấn chèn cuối cùng ....
public int insertId;
public bool executeCommand(string q) {
q += "; SELECT @@IDENTITY AS LastID";
bool retour = true;
SqlConnection myCon = new SqlConnection(Settings.DSN);
SqlCommand cmd = new SqlCommand(q, myCon);
try {
cmd.Connection.Open();
insertId = (int)cmd.ExecuteScalar();
if (insertId > 0) {
MessageBox.Show(insertId.ToString());
}
myCon.Close();
} catch (Exception ex) {
this.error = ex.Message;
retour = false;
}
return retour;
}
Tôi đang sử dụng phiên bản 2005 ... Tôi sẽ thử điều này nhưng nó sẽ là một số công việc vì tất cả các truy vấn chèn đã được viết ... EDIT: Cảm ơn bạn! Điều này làm việc, kết quả bây giờ chứa id của hàng chèn – jhoevenaars
Cảm ơn rất nhiều. Nhưng hãy nhớ rằng Inserted.ID có nghĩa là Inserted.name của cột ID :) –
Muchas gracias, funciona de maravilla: D – cheloncio