我有一个java应用程序,它建立了到Orcale数据库的jdbc连接。我正在尝试将数据插入到数据库中,但当涉及到oracle NUMBER类型时,我感到困惑。我的表中有三列,它们分别属于这些类型。
NUMBER(38,0)
NUMBER(20,0)
NUMBER(16,0)我的第一个问题是,为了在预准备语句中使用数据,我应该将数据放入哪种类型的java中。
我的第二个问题是,为了插入数据,我可以在预准备语句中使用什么set操作。
让我们假设我们正在使用数字(38,0)。我会将java类型设置为BigInteger吗?如果我有一个整数1,它会是
BigInteger one = new BigInteger(1);那么在我的preparedStatement中它将是
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TABLE(bigInt) VALUES(?)");
pstmt.setLong(1, one);这似乎不起作用,所以我假设这是不正确的。任何帮助都将不胜感激。
发布于 2013-06-27 22:37:50
setLong()不能接受BigInteger。如果您的数据库中确实有超出long范围的值,那么您可能需要使用setBigDecimal(),因为没有setBigInteger(),并且您的变量必须是BigDecimal类型。如果long包含数据库中的值范围,那么只需使用long和setLong()即可。
发布于 2014-09-27 05:51:34
您可以尝试这样做:
oracle.sql.NUMBER numberValue = new oracle.sql.NUMBER(bigIntegerValue);
cs.setObject(id, numberValue, OracleTypes.NUMBER);当bigIntegerValue是java.math.BigInteger的一个实例时,它适用于我
https://stackoverflow.com/questions/17345975
复制相似问题