【问题标题】:Multiple SQL commands with one connection一个连接的多个 SQL 命令
【发布时间】:2013-12-05 11:43:33
【问题描述】:

我需要执行多个命令,但只有一个连接。下面是一个例子

MySqlCommand myCommand = myConnection.CreateCommand();
MySqlCommand myCommand2;

myCommand.CommandText = "Some query text"

MySqlDataReader myReader = myCommand.ExecuteReader();

while (myReader.Read())
{

    myCommand2 = myConnection2.CreateCommand();

    myCommand2.CommandText = "Query with parameters from myCommand"

    MySqlDataReader myReader2 = myCommand2.ExecuteReader();

    while (myReader2.Read())
    {

    }

}

我希望只使用一个 myConnection 来执行此代码,这可能吗?因为如果我删除 myConnection2 并用 myConnection 替换它们,我会收到一个错误,因为第一个命令仍处于打开状态。

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4


    【解决方案1】:

    尝试添加“POOLING=FALSE;”在 MySQL ConnectionString 的末尾。

    【讨论】:

    • 不起作用我收到错误“Devart.Data.MySql.MySqlException:命令不同步;您现在无法运行此命令”
    • 好的,尝试重用命令,更改CommandText属性并在同一个MySqlCommand中再次执行阅读器。
    【解决方案2】:

    打开一个连接并构建一点

    public static object QueryHelper(string command)
    {
        ...
    }
    

    使用

    public static bool ReadyToQuery;
    

    等到第一个命令结束运行第二个。

    仅仅是因为每个连接只能一次读取一个阅读器

    【讨论】:

    • 不是这个问题的解决方案。我需要在第一次查询期间执行 sedcond 查询。从第一个查询中,我收到参数,如果清楚,我需要与第二个查询一起使用。
    • 正如我之前所说,每个 Connection 可以执行 N 个 ExecuteNonQuery 命令(如插入、更新、删除),但只能执行一个 ExecuteReader 有时您必须使用子查询 MySql manual 执行 SQL 端或执行第一个查询,使用 c# 变量将参数传递给第二个查询,或使用 2 个连接...是您的选择。显然,出于性能原因,最好的办法是在 MySql 端使用单个查询。
    猜你喜欢
    • 2016-01-05
    • 2019-05-12
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    相关资源
    最近更新 更多