私はクエリを実行し、成功するとtrueを返し、失敗するとfalseを返します。いいえ、メソッドを拡張して、挿入されたすべての挿入クエリでクラスvar insertId
に最後に挿入された行のIDが含まれるようにしました。SQL Server ExecuteScalar()は最後に挿入されたIDを返しません
問題はinsertId
は常に0なので、何とかexecuteScalar()
がIDを返さないということです。
アイデア?それが動作しない場合や、他のソリューションを使用すると、テーブルのスキーマとINSERTクエリあなたを投稿することができ、@@ IDENTITYの代わりに)最後の挿入クエリのID ....
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;
}
私は2005バージョンを使用しています...これを試してみるつもりですが、すべての挿入クエリが既に書かれているので、いくつかの作業になるでしょう...編集:ありがとうございます!これはうまくいきました。結果には挿入された行のIDが入ります – jhoevenaars
ありがとうございます。しかし、Inserted.IDはID列のInserted.nameを意味することを忘れないでください。 –
Muchas gracias、funciona de maravilla:D – cheloncio