Странная проблема с DataReader? - PullRequest
2 голосов
/ 24 марта 2010

У меня странная проблема с 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 как DBNull, несмотря на то, что у меня есть значение в столбце Col2 в базе данных. Я получаю значения Col1 и Col3 правильно. Какие могут быть возможные причины такого поведения?

Обновление : это исправлено, если я вызываю cmd.Prepare () перед вызовом cmd.ExecuteQuery (). Пожалуйста, кто-нибудь может объяснить это поведение?

Ответы [ 2 ]

0 голосов
/ 18 августа 2010

Вы пытались читать с именованным аргументом:

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

0 голосов
/ 24 марта 2010

Какой тип данных Col2? вы читаете с помощью GetValue, и, возможно, в базе данных есть значение, которое не преобразуется в Int ... это так?

...