这是我在 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 更新表之前执行。
- 根据此代码,这是应该发生的事情吗?
- 有没有办法防止这种情况发生(即完成第一个查询然后执行第二个查询)
最佳答案
ExecuteNonQuery()
方法是同步的,在完成之前不会执行下一条语句。这同样适用于 ExecuteReader()
。
这 2 个查询不能在上面的代码中并行运行(至少从一个线程运行。如果上面的代码在多个线程上运行,它可能会发生)。
还有相应的异步方法 ExecuteNonQueryAsync()
和 ExecuteReaderAsync()
但它们没有在上面的代码中使用。
关于c# mysql 等待上一个查询完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518394/