繁体   English   中英

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

[英]jdbc prepared statement with oracle NUMBER type

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

NUMBER(38,0)
NUMBER(20,0)
NUMBER(16,0)

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

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

让我们假设我们正在使用NUMBER(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包含数据库中的值范围,则只需使用longsetLong()

你可以尝试这种方式:

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

其中bigIntegerValuejava.math.BigInteger一个实例,它适用于我

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM