DataReader的奇怪问题?

时间:2010-03-24 14:55:14

标签: .net ado.net odbc datareader

我面临着DataReader的一个奇怪问题。我正在使用OdbcClient和传统的rdbms系统。

我正在向数据库发送follwing命令。

select Col1, Col2, Col3 from Table1 where Col2 = 'Val1';

但在某些情况下,当我通过DataReader迭代它时,如下所示。

IDataReader reader = cmd.ExecuteReader();

while(reader.Read())
{
  // Get the values from reader

  int col2 = reader.GetValue(1);

}

尽管我在数据库中的Col2列中有价值,但我将Col2值作为DBNull获取。我正确地获得了Col1和Col3的值。这种行为的可能原因是什么?

更新:如果在调用cmd.ExecuteQuery()之前调用cmd.Prepare(),则会修复此问题。任何人都可以解释这种行为吗?

2 个答案:

答案 0 :(得分:0)

Col2的数据类型是什么?你正在阅读GetValue,也许数据库有一个不能转换为Int的值......是这样的吗?

答案 1 :(得分:0)

您是否尝试使用命名参数进行阅读:

int col2 = int.parse(reader["Col2"].ToString());