oracle强制转换int,Oracle数字问题:十进制到Int64转换

我们正在开发一个将其数据存储在数据库中的独立应用程序。我们使用数据集和表适配器与数据库进行通信。其中一个基本要求是应用程序能够使用SQL Server、Oracle和MySQL。为此,我们在TAS供应商中进行了独立的查询。我们使用ODBC提供程序。

它对SQL Server和MySQL很好,但是对于Oracle,我们遇到了一些问题。我们不能克服的一个问题是十进制到Int64的转换错误。

Oracle表使用数字(38)表示系统ID(autoincrement字段),因为它似乎映射到十进制。但是,我们在dataset/tas中使用int64/long,因为SQL Server和MySQL使用bigint。(请注意,数据集TableAdapters在开始时是从SQL Server架构自动生成的。)

当从Oracle获取一个数字值时,我们得到一个强制转换异常,因为它返回一个十进制对象。

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中的精度数字(例如数字(10)),正如我们在其他论坛中看到的那样,但没有运气。

这是一个ODBC问题吗?如果我们转移到其他供应商会解决这个问题吗?

你可能感兴趣的:(oracle强制转换int)