我有以下情况。我有PL / SQL - 我点击桌子上的“描述”按钮,它告诉我一列的类型是“INTEGER”。 在C#方面,我有这段代码来读取该值:
// GET ID
if (!rdr.IsDBNull(rdr.GetOrdinal("ID")))
{
int ID = rdr.GetInt32(rdr.GetOrdinal("ID")); // Here I get exception
}
但我得到了这个例外:
指定的演员表无效。
有人可以帮忙吗?
堆栈追踪:
StackTrace“at Oracle.DataAccess.Client.OracleDataReader.GetInt32(Int32 i)\ r \ n at GatewayFileImporter.Form1.button1_Click(Object sender,EventArgs e)in c:\ Users \ g \ Documents \ Visual Studio 2012 \ Projects \ FileImpo \ FileImpo \ Form1.cs:第86行“string
答案 0 :(得分:0)
此数据类型是
NUMBER(38)
数据类型的别名,并且是 旨在让OracleDataReader
返回System.Decimal
或。{ OracleNumber而不是整数值。使用.NET Framework 数据类型可能导致溢出。
看起来这样在.NET端映射到十进制,你需要使用GetDecimal
method代替;
decimal ID = rdr.GetDecimal(rdr.GetOrdinal("ID"));