DataReader で奇妙な問題に直面しています。レガシー rdbms システムで OdbcClient を使用しています。
次のコマンドをデータベースに送信しています。
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() を呼び出すと、これは修正されます。誰でもこの動作を説明できますか?