如何修复"已经有一个开放的DataReader ..."

时间:2016-12-29 10:53:05

标签: c# npgsql

我在尝试解决此错误时遇到问题:

  

已经有一个与此命令关联的打开DataReader,必须先关闭它。

我知道这个错误的含义以及我应该如何修复它,但每次在现有的NpgsqlCommand上创建一个新的NpgsqlConnection,当前一个命令尚未完成时,会发生此错误。

命令运行如下:

private object RunSelectScalar(NpgsqlCommand cmd) {
    cmd.Connection = connection;     // connection is a connected NpgsqlConnection
    object result = cmd.ExecuteScalar();

    return result;
}

object o = RunSelectScalar(new NpgsqlCommand("SELECT foo FROM bar LIMIT 1"));

所以,我不知道如何关闭它,或者使用using,因为我没有指定DataReader

1 个答案:

答案 0 :(得分:1)

添加

  

Preload Reader = true;

使用您的连接字符串。为我工作。

例如:

 <add name="dbTestConnectionString" connectionString="Server=localhost;Database=dbNew3;User Id=postgres;Password=your_pass;Preload Reader = true;" providerName="Npgsql" />