0

我在 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());

当我检查我的数据库时,每条记录都发布了两次。当我删除线。

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

一切都很好,但没有检索到身份。我如何实现代码以检索身份字段值并仅发布一次记录。

4

1 回答 1

3

ExecuteScalar执行查询并返回结果。ExecuteNonQuery执行查询。这意味着您通过调用两者来执行两次查询。摆脱ExecuteNonQuery方法,你会很好

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

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