在ASP.NET中检索LAST_INSERT_ID值时记录发布两次

时间:2012-07-06 19:07:20

标签: c# asp.net mysql

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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