C#和#x2B;MySQL-已经有一个与此连接关联的开放数据读取器

C#和#x2B;MySQL-已经有一个与此连接关联的开放数据读取器,c#,mysql,.net,C#,Mysql,.net,我阅读了我在这里和网上看到的关于这个主题的每一篇文章,但仍然无法理解这一点,因为我遇到的问题不是读者本身,而是用户“要求程序再次使用读者”,我将尽可能缩小这个问题 我的程序能够正确连接、插入、更新和读取,但问题是,当用户在不退出应用程序的情况下再次尝试读取(在生产环境中肯定会发生这种情况)时,程序会意识到已经有一个与此连接相关联的打开的DataReader。 var candidateReader = daoMySql.GetMySqlDataReader(query); //a breakpo

我阅读了我在这里和网上看到的关于这个主题的每一篇文章,但仍然无法理解这一点,因为我遇到的问题不是读者本身,而是用户“要求程序再次使用读者”,我将尽可能缩小这个问题
我的程序能够正确连接、插入、更新和读取,但问题是,当用户在不退出应用程序的情况下再次尝试读取(在生产环境中肯定会发生这种情况)时,程序会意识到已经有一个与此连接相关联的打开的DataReader。

var candidateReader = daoMySql.GetMySqlDataReader(query); //a breakpoint on this line showed that the error is here, when it executes again
candidateReader.Read();
我实际上是在使用它之后关闭连接,使用

candidatoReader.Close();
但出于某种原因,它似乎并没有真正关闭它(?)

我怎样才能解决这个问题?我在这里看不到什么

编辑:

如果我尝试使用相同的DataReader进行读取,在我关闭它之后,我得到的错误是

当读卡器关闭时尝试读取无效

这是有意义的,我不明白的是为什么它会产生原始错误,但我开始意识到问题可能在于,该方法是静态的,并且在静态类中,我将尝试更改它,以便我可以实例化一个类,并使用该方法查看问题是否仍然存在

更新:我尝试了我在上一次编辑中解释的内容,但没有成功,这就是
GetMySQLDataReader(字符串查询)
所做的

internal MySqlDataReader GetMySQLDataReader(string query)
{
    var cmd = new MySqlCommand(query, Connection);
    return cmd.ExecuteReader();
}
GetMySQLDataReader
使用的
连接始终是相同的

更新:


我发现了错误所在,有另一个方法返回了
reader.HasRows
,它没有关闭DataReader,修复了这个问题,现在它工作正常,长话短说。如果其他人有此问题,请检查是否没有其他DataReader保持打开状态

你能分享更多的代码来尝试使用相同的数据阅读器两次吗?嗨@ChetanRanpariya请检查上次的更新,我刚刚修复了它。