oracle 只返回一行,c# – OracleDataReader只返回一行

我正在尝试循环游标.当我在pl / sql中直接执行命令(表示为sql – 见下文)时,我得到的结果集包含更多行.

但是当我运行这段代码时,我只得到一行:

using (OracleConnection conn = new OracleConnection(connstring))

{

conn.Open();

string sql = "select close, ts from dpr@price where qot_id=2029543939 and ts>='" + start + "' and ts<='" + end + "'";

using (OracleCommand comm = new OracleCommand(sql, conn))

{

using (OracleDataReader rdr = comm.ExecuteReader())

{

while (rdr.Read())

{

Console.WriteLine(rdr.GetOracleDecimal(0));

}

}

}

}

代码不会抛出任何异常(至少不是以通常的方式;我的意思是它不会停止或写入堆栈跟踪).但是我可以在调试时通过reader Object看到这些行(我不认为它在这里是相关的,但显示输出“以防万一”):

InitialLONGFetchSize = 'rdr.InitialLONGFetchSize' threw an exception of type 'System.NullReferenceException'

InitialLOBFetchSize = 'rdr.InitialLOBFetchSize' threw an exception of type 'System.NullReferenceException'

结果应该只有DateTime和Number(10,4)类型.并且该表没有类型为lob或long的字段.

这是表格方案:

QOT_ID NUMBER

TS DATE

CLOSE NUMBER

OPEN NUMBER

HIGH NUMBER

LOW NUMBER

KASSE NUMBER

VOLUME NUMBER

CLOSE_BID NUMBER

SPL_BEREINIGT VARCHAR2

OPEN_INTEREST NUMBER

TRADES NUMBER

TURNOVER NUMBER

HIGH_BID NUMBER

LOW_ASK NUMBER

查询正确且条目存在.返回的行似乎是随机的……它不是第一行或最后一行.我正在使用ODT和ODAC 11.我有VS2012并在Windows 7(32位)下工作.我已连接到Oracle 10g.

有什么线索我做错了什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中连接 Oracle 数据库并查询后,可以将查询结果保存在各种数据结构中,如数组、列表、数据集、数据表等等。以下是一些示例代码: 1. 将查询结果保存在数组中: ```csharp using Oracle.DataAccess.Client; string connString = "Data Source=<Oracle 数据库连接字符串>;User ID=<用户名>;Password=<密码>"; using (OracleConnection conn = new OracleConnection(connString)) { conn.Open(); string sql = "SELECT * FROM <表名> WHERE <条件>"; using (OracleCommand cmd = new OracleCommand(sql, conn)) { using (OracleDataReader reader = cmd.ExecuteReader()) { List<object[]> resultList = new List<object[]>(); while (reader.Read()) { object[] rowValues = new object[reader.FieldCount]; for (int i = 0; i < reader.FieldCount; i++) { rowValues[i] = reader.GetValue(i); } resultList.Add(rowValues); } // 处理查询结果数组 } } } ``` 在上面的代码中,将查询结果保存在 `List<object[]>` 类型的列表中,每行数据都是一个 `object[]` 类型的数组,数组元素为每个字段的值。 2. 将查询结果保存在数据集中: ```csharp using Oracle.DataAccess.Client; using System.Data; string connString = "Data Source=<Oracle 数据库连接字符串>;User ID=<用户名>;Password=<密码>"; using (OracleConnection conn = new OracleConnection(connString)) { conn.Open(); string sql = "SELECT * FROM <表名> WHERE <条件>"; using (OracleDataAdapter adapter = new OracleDataAdapter(sql, conn)) { DataSet dataSet = new DataSet(); adapter.Fill(dataSet); // 处理查询结果数据集 } } ``` 在上面的代码中,将查询结果保存在 `DataSet` 类型的数据集中,数据集包含一个或多个 `DataTable` 类型的数据表,每个数据表对应查询结果的一个结果集。 3. 将查询结果保存在数据表中: ```csharp using Oracle.DataAccess.Client; using System.Data; string connString = "Data Source=<Oracle 数据库连接字符串>;User ID=<用户名>;Password=<密码>"; using (OracleConnection conn = new OracleConnection(connString)) { conn.Open(); string sql = "SELECT * FROM <表名> WHERE <条件>"; using (OracleDataAdapter adapter = new OracleDataAdapter(sql, conn)) { DataTable dataTable = new DataTable(); adapter.Fill(dataTable); // 处理查询结果数据表 } } ``` 在上面的代码中,将查询结果保存在 `DataTable` 类型的数据表中,数据表包含多行多列的查询结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值