C# 尝试从数据库获取数据时获取异常System.InvalidOperationException

C# 尝试从数据库获取数据时获取异常System.InvalidOperationException,c#,database,oracle,C#,Database,Oracle,我试图从C#控制台应用程序中的oracle db表中获取数据。 但我得到的只是System.InvalidOperationException,描述如下: 未处理的异常:System.InvalidOperationException:由于对象的当前状态,操作无效。 位于Oracle.DataAccess.Client.OracleDataReader.GetValue(Int32 i) 在C:\Users\User\GetDataFromOracleDb\GetDataFromOracleDb

我试图从C#控制台应用程序中的oracle db表中获取数据。 但我得到的只是System.InvalidOperationException,描述如下:

未处理的异常:System.InvalidOperationException:由于对象的当前状态,操作无效。 位于Oracle.DataAccess.Client.OracleDataReader.GetValue(Int32 i) 在C:\Users\User\GetDataFromOracleDb\GetDataFromOracleDb\Program.cs中的GetDataFromOracleDb.Program.Main(字符串[]args)处:第26行

我的C#代码是:

SQL Developer中的同一查询返回3行

我还尝试从“系统”用户下的随机选项卡中获取数据,得到了所有行,没有异常。为此,我更改了连接字符串和查询:

var cs = "Data Source=DEMO;User Id=system;Password=admin;";
var query = "select * from help";
我的问题是: 为什么我会得到这个例外?
我需要做什么来解决这个问题?

Console.WriteLine(dr.Read())的输出是什么?是真是假?里面真的有数据吗?@BugFinder,yes@TimSchmelter,这是假的。注意:当我尝试查询count(*)时,dr.Read()返回true,但dr[0]。ToString()返回0。(也许会有帮助)@IliaMikhailov:那么,表中就没有数据了。如果使用
SELECT COUNT(*)
您将始终得到一个结果,因为如果表为空,那么您将得到
0
。这就是错误的原因,因为如果读卡器没有记录,则无法使用
dr[0]
var cs = "Data Source=DEMO;User Id=system;Password=admin;";
var query = "select * from help";