2

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() を呼び出すと、これは修正されます。誰でもこの動作を説明できますか?

4

2 に答える 2

0

Col2のデータ型は何ですか?GetValueで読んでいて、データベースの値がIntに変換できない可能性があります...そうですか?

于 2010-03-24T14:59:29.007 に答える
0

名前付き引数で読み込もうとしましたか:

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

?

于 2010-08-18T18:26:23.657 に答える