Я таблицу Oracle с колонкой типа NUMBER(38,0)
Прочитайте большое количество с ODBC для Oracle
Мне нужно получить этот столбец к моей C# приложение.
Я использую библиотеку System.Data.Odbc.OdbcDataReader
для чтения данных из таблицы Oracle.
Я попытался извлечения данных, используя обычные функции, такие как:
var data = oracleReader["COLUMN"].ToString();
И
var data = oracleReader.GetString(0);
И даже функция oracleReader.GetBytes()
.
Но я всегда получаю System.OverflowException
, потому что OdbcDataReader
всегда пытаются получить столбец как decimal
на последней стадии:
System.OverflowException: Value was either too large or too small for a Decimal.
at System.Data.Odbc.OdbcDataReader.internalGetDecimal(Int32 i)
at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i, TypeMap typemap)
at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i)
at System.Data.Odbc.DbCache.AccessIndex(Int32 i)
at System.Data.Odbc.OdbcDataReader.internalGetString(Int32 i)
at System.Data.Odbc.OdbcDataReader.GetString(Int32 i)
Я рад, если я могу получить эти данные как String
к моей заявке.
FYI, я не могу изменить тип данных столбца, мне нужно работать с этим.
Есть ли способ обойти представление .NET? Мне просто нужны данные в моем приложении в любом формате. Моя проблема заключается не в том, как представлять данные, когда я, наконец, ее получил. – Blc
Если вы попробуете: object data = oracleReader ["COLUMN"], генерирует ли это исключение? –
Да, это делает исключение – Blc