c#mysql等待以前的查询完成

时间:2014-02-03 01:13:52

标签: c# mysql

这是我在c#

中的代码的一部分
MySqlConnection connection = new MySqlConnection(MyConnectionString);
connection.Open();
cmd = connection.CreateCommand();
...
int xxxx;
cmd.CommandText = "UPDATE myTable SET ..... ";
xxxx = cmd.ExecuteNonQuery();
Debug.WriteLine(xxxx + " rows updated");

cmd.CommandText = "select id,... from myTable";
dr = cmd.ExecuteReader();
while (dr.Read())
...

第一个查询(更新)大约需要30秒才能执行。 我观察到的是,可能在query1更新表之前执行了第二个查询。

  • 这是根据此代码应该发生的事情吗?
  • 有没有办法防止这种情况发生(即完成第一次查询,然后执行第二次查询)

1 个答案:

答案 0 :(得分:1)

ExecuteNonQuery()方法是同步的,下一个语句在完成之前不会执行。这同样适用于ExecuteReader()

这两个查询不能在上面的代码中并行运行(至少从一个线程运行。如果上面的代码在多个线程上运行,则可能发生)。

还有相应的异步方法ExecuteNonQueryAsync()ExecuteReaderAsync(),但它们在上面的代码中没有使用。