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

标签 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 更新表之前执行。

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

最佳答案

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

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

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

关于c# mysql 等待上一个查询完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518394/

相关文章:

c# - 两个VS2008 C#类库项目是否可以共享一个命名空间?

javascript - Angularjs 和关系数据库

mysql - 将回调函数的返回值存储在全局变量中(Node.JS + Mysql)

c# - 异步调用中 .Result 有什么意义?

c# - 具有 WPF KeyDown 事件的多个键

mysql View 与存储过程

php - 如果数据相同则显示一次

mysql - Django 迁移创建不同的表名称

c# - 字符串拆分并将结果分布在不同的数组中

c# - ASP.NET Core 的 Microsoft 身份验证方案是什么?