如何在oracle数据库中存储BigInteger值

con*_*nya 5 java oracle jdbc oracle10g

我使用JDBC将Java程序连接到Oracle数据库.我想BigInteger在数据库中存储值(512位).列的类型应该是什么?

我是这样想的:

我在数据库中选了一个数字类型的列.

我转换BigIntegerBigDecimal这样的:

BigInteger b=new BigInteger("5779857570957802579079");
Number n =b;
BigDecimal d=(BigDecimal)n;

PreparedStatement pstmt=con.prepareStatemant("insert into database values(?,?)");
pstmt.setString(1,"john");
pstmt.setBigDecimal(2,d);
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

javax.servlet.ServletException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.math.BigDecimal
root cause 

java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.math.BigDecimal

这段代码片段有什么问题吗?如果有,请建议其他方法.

Thi*_*rry 0

我没有直接回答你的问题,但我只看到一种可以存储 512 位数字的 Oracle 数据类型:varchar2(156) (156 = abs(log(2^512))+2)

所以我宁愿将大整数转换为字符串而不是大十进制。