c#mysql等待上一个查询完成

c#mysql等待上一个查询完成,c#,mysql,C#,Mysql,这是我c语言代码的一部分# 执行第一个查询(更新)大约需要30秒。 我观察到,第二个查询可能是在query1更新表之前执行的 根据这一准则,这是应该发生的吗 是否有办法防止这种情况发生(即完成第一个查询,然后执行第二个查询) ExecuteNonQuery()方法是同步的,下一条语句在完成之前不会执行。这同样适用于ExecuteReader() 这两个查询不能在上面的代码中并行运行(至少从一个线程运行。如果上面的代码在多个线程上运行,则可能发生这种情况) 还有相应的异步方法ExecuteNon

这是我c语言代码的一部分#

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

  • 根据这一准则,这是应该发生的吗
  • 是否有办法防止这种情况发生(即完成第一个查询,然后执行第二个查询)
ExecuteNonQuery()
方法是同步的,下一条语句在完成之前不会执行。这同样适用于
ExecuteReader()

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


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

不,这是不应该发生的。你绝对肯定这是真的吗?嗯,不是100%肯定。这就是为什么我说也许。我刚在开头添加了一些关于cmd的代码。所以,应该发生的是,cmd只能有一个“实例”,每个查询都必须在开始下一个查询之前完成,对吗?@Thanos Darkadakis:查询是一个接一个地执行的
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())
...