我们正在开发一个将其数据存储在数据库中的独立应用程序。我们使用数据集和TableAdapters与数据库进行通信。其中一个基本要求是应用程序能够使用SQL Server,Oracle和MySQL。为此,我们使助教供应商中的查询独立。我们使用ODBC提供程序。Oracle NUMBER问题:将十进制转换为Int64转换
它适用于SQL Server和MySQL,但对于Oracle我们有问题。我们无法克服的其中一个问题是十进制到Int64的转换错误。
Oracle表使用的系统ID(自动增量字段),因为它似乎被映射到十进制数(38)。但是,我们在DataSet/TA中使用Int64/long,因为SQL Server和MySQL使用BIGINT。 (请注意,该数据集的TableAdapter从一开始就SQL Server架构,其中自动生成的。)
我们正从甲骨文一个数值时,因为它返回一个小数对象中获取转换异常。
DbCommand getIDcmd = connection.CreateCommand();
getIDcmd.CommandText = "select LAST_ID from SEQUENCE_ID";
sequenceID = (Int64)getIDcmd.ExecuteScalar(); // we get a cast exception here returns decimal
请注意,我们一直试图降低在Oracle中精度数(例如NUMBER(10))为我们与其他论坛条目,但没有运气看到。
这是一个ODBC问题吗?如果我们转移到其他提供商将解决问题?