![](/img/trans.png)
[英]Oracle's RETURNING INTO usage in Java (JDBC, Prepared Statement)
[英]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
包含数据库中的值范围,则只需使用long
和setLong()
。
你可以尝试这种方式:
oracle.sql.NUMBER numberValue = new oracle.sql.NUMBER(bigIntegerValue);
cs.setObject(id, numberValue, OracleTypes.NUMBER);
其中bigIntegerValue
是java.math.BigInteger
一个实例,它适用于我
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.