0

レコードを保存し、ID フィールド値を取得するためのコードを asp.net に実装しました。これが私のコードです。

str.Append("Insert Into Table1(value1,value2)values(?value1,?value2);Select LAST_INSERT_ID();");
MySqlCommand cmd = new MySqlCommand(str.ToString(), con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new MySqlParameter("?value1", value1));
cmd.Parameters.Add(new MySqlParameter("?value2", value2));
if (con.State != ConnectionState.Open) 
  con.Open();
cmd.ExecuteNonQuery();
long id = Convert.ToInt64(cmd.ExecuteScalar());

データベースを確認すると、各レコードが 2 回投稿されました。行を削除すると。

 long id = Convert.ToInt64(cmd.ExecuteScalar());

すべて問題ありませんが、ID は取得されません。一度だけ投稿された ID フィールド値とレコードを取得するためにコードを実装するにはどうすればよいですか。

4

1 に答える 1

3

ExecuteScalarクエリを実行し、結果を返します。ExecuteNonQueryクエリを実行します。つまり、両方を呼び出して、ここでクエリを 2 回実行していることになります。メソッドを取り除くとExecuteNonQuery、あなたはうまくいくでしょう

if (con.State != ConnectionState.Open) 
   con.Open();    

long id = Convert.ToInt64(cmd.ExecuteScalar());
于 2012-07-06T19:09:56.313 に答える