首页 > 解决方案 > 读取器在数据库层关闭时尝试调用读取无效

问题描述

我在 my 中编写了方法database layer以供其他上层使用。该方法返回IDataReader如下所示:

public IDataReader GetDataReader(string commandText, CommandType commandType, IDbDataParameter[] parameters)
{
     IDataReader reader = null;

     using (var connection = _database.GetConnection())   //either opens new or uses existing connection if exist
     {
           using (var command = _database.GetCommand(commandText, connection, commandType))
           {
               {
                   if (parameters != null)
                   {
                        foreach (var parameter in parameters)
                        {
                            command.Parameters.Add(parameter);
                        }
                   }
                   reader = command.ExecuteReader();
                   return reader;
                }
           }
     }
}

现在,当我想在其他地方使用该方法时,当它到达时(reader.Read())它给了我一个错误。

private void GetResult()
{
    var query = "SELECT * FROM MyTable";
    var reader = Context.GetDataReader(query, CommandType.Text, null);

    while (reader.Read())
    {
         //...
    }
}

错误:

'Invalid attempt to call Read when reader is closed.'

我能做些什么来解决这个问题?

标签: c#

解决方案


推荐阅读