Странная проблема с DataReader?

Я столкнулся со странной проблемой с 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 ответа

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

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

?

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

Другие вопросы по тегам