Oracle InvalidOperationException-尝试从表中选择时

Zac*_*yne 1 c# oracle

我有一个参数表,其中有一个参数说明我的程序是否应该运行,我正在尝试获取该值以检查功能。

这是功能

    private static bool shouldRun()
    {
        OracleCommand c = conn.CreateCommand();

        c.CommandText = "select value from parameters where lower(name) = lower('valuetocheck')"; // this one doesn't work
        //c.CommandText = "select 'Y' from dual"; - This one works
        c.CommandType = System.Data.CommandType.Text;

        OracleDataReader dr = c.ExecuteReader();

        dr.Read();

        string s = dr.GetString(0); // exception on this line

        return false;
    }
Run Code Online (Sandbox Code Playgroud)

其他信息如下:

对闭合对象的无效操作

正如上面所见,我已经尝试从双选中进行选择,它工作得很好,但是当我尝试运行实际查询时,它并不喜欢它。我已经在SQL Developer中检查了查询,并且工作正常。

我已经浏览过SO和其他网站,关于此问题,我可以获得的唯一信息是该命令与连接没有关联,正如您在上面看到的那样。

我也尝试过

OracleCommand c;
c.Connection = conn;
Run Code Online (Sandbox Code Playgroud)

这也不起作用。

对此有任何见解将是非常好的,谢谢!

Que*_*tin 5

我最近有同样的问题。我得到了“对一个关闭的对象无效的操作”,但是当我调试代码时,是关闭的是OracleDataReader而不是OracleConnection。我的问题是查询retuned为空响应,如果没有数据,DataReader会自行关闭。因此,我的解决方案只是通过添加以下内容来检查数据读取器是否有任何行。

dro.Read();

if (dro.HasRows)
{
   //Do your 
}
Run Code Online (Sandbox Code Playgroud)

希望对您有所帮助。