2

DataReader 遇到一个奇怪的问题。我将 OdbcClient 与旧版 rdbms 系统一起使用。

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

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(),则此问题已修复。请任何人都可以解释这种行为吗?

4

2 回答 2

0

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

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

?

于 2010-08-18T18:26:23.657 回答
0

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

于 2010-03-24T14:59:29.007 回答