Я пытаюсь считывать значения из System.Data.Odbc.OdbcDataReader. Проблема заключается в том, что он просто не работает. Когда я пытаюсь получить значение из существующего столбца (поле), он выдает исключение. В моем cae, FieldCount - это 8, но, например, если я вызываю reader.IsDBNull (4), он бросает.IDbReader исключает исключения для существующих столбцов
Для значений столбцов значений от 0 до 2 оно возвращает правильное значение. Но читатель [3] читателю [7], исключение бросается без информации о том, что произошло.
Хуже того, этот код (GetName) также вызывает одно и то же исключение!
for (int ordinal = 0; ordinal < reader.FieldCount; ordinal++)
{
Console.WriteLine("Field {0}: {1}", ordinal, reader.GetName(ordinal));
}
Это исключение, которое вызывается, когда я получаю значение для существующего столбца:
в System.Data.Odbc.OdbcConnection.HandleError (OdbcHandle hrHandle, RETCODE RETCODE) в System.Data.Odbc.OdbcDataReader.GetColAttribute (Int32 iColumn, SQL_DESC v3FieldId, SQL_COLUMN v2FieldId, обработчик HANDLER) в System.Data.Odbc.OdbcDataReader.GetSqlType (Int32 я) в System.Data.Odbc.OdbcDataReader.GetValue (Int32 i) в System.Dat a.Odbc.OdbcDataReader.IsDBNull (Int32 я) в AisgeXmlVrdb.LogicaNegocio.MappingExtensions.SafeGetString (IDataRecord читатель, Int32 colIndex) в AisgeXmlVrdb.LogicaNegocio.MetodosComunes.ObtenerSolicitudesExportacionTodas()
Я не понимаю что происходит под капотом.
Чтобы добавить немного больше информации, драйвер ODBC, который я использую, - это File Maker от Apple.
Что еще более странно, так это проверка reader[4]
, reader[5]
, reader[6]
... также бросает.
Возможно, драйвер ODBC не поддерживает что-то?
Пожалуйста, проверьте исправление. Я допустил ошибку. FieldCount равен 8, и запрос включает ровно 8 полей, но, например, читатель [4] выдает исключение. – SuperJMN