DataReader 循环查询中的 C# MySQL 查询

Posted

技术标签:

【中文标题】DataReader 循环查询中的 C# MySQL 查询【英文标题】:C# MySQL Query in DataReader loop query 【发布时间】:2013-05-27 07:15:10 【问题描述】:

我在 C# 中有一个方法,它应该从 mysql 获取一些数据,然后将这些数据插入另一个表中。 问题是,无论我尝试什么,我都会得到another datareader is open。 我尝试使用using 语句,但没有成功,也许我做错了。 该怎么做?

public void MethodName(List<string> objects)

    foreach(string Object in objects)
        SQLActions.Initialize();
        SQLActions.SQL_Open();
        MySqlDataReader queryData = SQLActions.SQL_Query("SELECT...query...");

        MySqlDataReader objectsData = SQLActions.SQL_Query("Another select....");
        SQLActions.SQL_NonQuery("Insert...");
        while(queryData.Read())
            SQLActions.SQL_NonQuery("Another Insert...");
        
        SQLActions.SQL_Close();
    

【问题讨论】:

一些代码会很有帮助。 在此处提及您的代码。 【参考方案1】:

您可能对 DataReader 和 ExecuteNonQuery 使用相同的连接。这不受支持,根据 MSDN:http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.80).aspx

检查一下:

C# mySQL There is already an open DataReader associated

来自微软:

您应该始终在使用完 DataReader 对象后调用 Close 方法。

【讨论】:

我之前检查过,但我不确定这是否会有所帮助。我想在阅读过程进行时插入。如果我关闭连接,我将无法阅读。 我可以使用两个并行连接吗?

以上是关于DataReader 循环查询中的 C# MySQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

c#如何将查询后的结果放入list中

传递给wcftestclient时如何循环datareader?

SQL DataReader 如何显示查询中的空值

Sql 直接从 DataReader 中选择

从 datareader 获取聚合函数 count() 的值

DataReader 中的倍数表