C#mysqlreader出现相同的连接错误

时间:2010-06-10 16:38:57

标签: c# mysql

我必须找到一种方法在C#中执行此操作,如果可能的话......

我必须在我的文件夹列表(mysql表)上循环,对于我实例化的每个文件夹,我必须执行另一个查询,但是当我这样做时,它说:“已经有一个与此连接关联的打开的DataReader”而且我是已经在mysqlreader循环中。

请注意,我过度简化了代码只是为了向您展示,事实是我必须在mysqlreader循环中进行查询,并且看起来不可能,因为它们在同一个连接上?

MySqlConnection cnx = new MySqlConnection(connexionString);

        cnx.Open();

        MySqlCommand command= new MySqlCommand("SELECT * FROM folder WHERE  folder_id = " + id, cnx);

        MySqlDataReader reader= commande.ExecuteReader();

        while (reader.Read())
        {
            this.folderList[this.folderList.Length] =
                   new CFolder(reader.GetInt32"folder_id"),                                                                             cnx);
        }
        reader.Close();

        cnx.Close();

3 个答案:

答案 0 :(得分:1)

嗯,你可以先将所有数据放到localy,也许是一个数据表或其他一些集合,然后循环遍历那个让你在该循环中进行第二次sql调用。

但是,在循环中进行sql调用通常不是一个好的途径。无论如何,您是否可以在第一次通话中获得所有数据?

答案 1 :(得分:0)

这里有几个选项,要么可以正常工作:

  1. 创建新连接,并为第二个阅读器使用第二个连接。

  2. 迭代第一个数据阅读器的结果,将folder_id值存储在一个集合中,然后关闭阅读器并打开一个新的。

答案 2 :(得分:0)

当您打开DataReader时,您无法将该连接用于任何其他事情。您必须先关闭打开的阅读器,或打开新连接。数据库连接是宝贵的资源,因此除非绝对必要,否则我不建议在循环中打开新连接。

我没有完全得到您发送的代码..除了datareader之外,该连接不用于任何其他内容。