带有oracle NUMBER类型的jdbc预处理语句

med*_*ium 5 java oracle jdbc ojdbc

我有一个java应用程序,它建立与Orcale数据库的jdbc连接.我试图将数据插入到数据库中,但是当涉及到oracle NUMBER类型时我很困惑.我的表中有三列分别是这些类型的列.

NUMBER(38,0)
NUMBER(20,0)
NUMBER(16,0)
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是我应该将数据放入什么类型的java类型,以便在预准备语句中使用它.

我的第二个问题是我可以在预准备语句中使用什么set操作来插入数据.

让我们假设我们正在使用NUMBER(38,0).我会将java类型设置为BigInteger吗?如果我有一个整数1,那就是

 BigInteger one = new BigInteger(1);
Run Code Online (Sandbox Code Playgroud)

然后在我准备好的声明中

 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TABLE(bigInt) VALUES(?)");
 pstmt.setLong(1, one);
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,所以我认为这是不正确的.任何帮助,将不胜感激.

Gri*_*Dog 5

setLong()不能拿一个BigInteger.如果您的值确实超出了long数据库中的范围,那么您可能需要使用setBigDecimal(),因为没有setBigInteger(),并且您的变量必须是类型BigDecimal.如果long包含数据库中的值范围,则只需使用longsetLong().