【发布时间】:2015-01-31 01:15:27
【问题描述】:
我有一个包含NUMBER(38,0) 类型列的 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 发送到我的应用程序,我会很高兴。
仅供参考,我无法更改列的数据类型,我需要使用它。
【问题讨论】: