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