Java jdbc准备的oracle数字类型语句

Java jdbc准备的oracle数字类型语句,java,oracle,jdbc,ojdbc,Java,Oracle,Jdbc,Ojdbc,我有一个java应用程序,它建立了到Orcale数据库的jdbc连接。我试图将数据插入数据库,但在涉及oracle编号类型时,我感到困惑。我的表中有三列分别属于这些类型 NUMBER(38,0) NUMBER(20,0) NUMBER(16,0) 我的第一个问题是,为了在准备好的语句中使用数据,我应该将数据放在什么类型的java类型中 我的第二个问题是,为了插入数据,我可以在准备好的语句中使用什么集合操作 假设我们使用的是数字(38,0)。我会将java类型设置为BigInteger吗?如果我

我有一个java应用程序,它建立了到Orcale数据库的jdbc连接。我试图将数据插入数据库,但在涉及oracle编号类型时,我感到困惑。我的表中有三列分别属于这些类型

NUMBER(38,0)
NUMBER(20,0)
NUMBER(16,0)
我的第一个问题是,为了在准备好的语句中使用数据,我应该将数据放在什么类型的java类型中

我的第二个问题是,为了插入数据,我可以在准备好的语句中使用什么集合操作

假设我们使用的是数字(38,0)。我会将java类型设置为BigInteger吗?如果我有一个整数1,它会是吗

 BigInteger one = new BigInteger(1);
那么在我准备好的声明中

 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TABLE(bigInt) VALUES(?)");
 pstmt.setLong(1, one);
这似乎不起作用,所以我认为这是不正确的。任何帮助都将不胜感激

setLong()
不能接受
BigInteger
。如果数据库中的值确实超过了
long
的范围,则可能需要使用
setBigDecimal()
,因为没有
setBigInteger()
,并且变量的类型必须是
BigDecimal
。如果
long
包含数据库中的值范围,则只需使用
long
setLong()

您可以尝试以下方法:

 oracle.sql.NUMBER numberValue = new oracle.sql.NUMBER(bigIntegerValue);
 cs.setObject(id, numberValue, OracleTypes.NUMBER);

其中,
bigIntegerValue
java.math.BigInteger
的一个实例,它对我有效

你试过setBigDecimal()吗,java.math.BigDecimal)@bhaviksha我试过setBigDecimal,它仍然给我ORA-00911:无效字符。我甚至正在构建并打印sql insert语句,然后将其粘贴到sql developer中,它工作得很好。这只是java内部的失败。我遵循了一些与此类似的问题。不幸的是,没有答案:(…但有一个答案建议将其存储为字符串..这对您有效吗?@medium-这是您的实际语句,还是您编辑了它?只是想知道您是否在命令字符串的末尾留下了分号-这在SQL Developer中有效,但通过JDBC抛出ORA-00911。我发现了问题..在我的pr中,我很难为情地这样说eParedStatement字符串我在conn.prepareStatement的末尾添加了一个分号(“插入到表中(bigInt)值(?);”);抱歉..感谢您的帮助