我的数据库包含一个数据类型为ARR_ID
的字段NUMBER(20)
,
值为= 100013085001
某些java应用程序正在获取此值,并且它们使用Integer
作为获取值的数据类型。
在其应用程序的输出中,该值显示为1228837193
。
这个值如何用Java转换我不知道? 当数据太大而无法包含在数据类型中时会发生什么? 应用程序不应该在这种情况下抛出错误吗?
答案 0 :(得分:1)
这取决于您使用的SQL驱动程序。当我使用SQLite驱动程序时,我看到了您描述的情况。我也有点担心并检查了消息来源。数据类型由列中的值确定。如果它不适合Integer
使用Long
。
我不记得这对于一个系列是如何工作的。您可能想要检查您正在使用的驱动程序的来源(如果它也是开源的)。
答案 1 :(得分:0)
如果您使用JDBC然后使用20位整数(例如12345678901234567890),程序将抛出com.mysql.jdbc.exceptions.jdbc4.MySQLDataException:' 1.2345678901234567E19'在列' 1'超出数据类型INTEGER的有效范围。看来你使用的是我没有的Oracle,这是针对mysql的,你可以自己试试。