Странная проблема с 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... это так?