5

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

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

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

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

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

 BigInteger one = new BigInteger(1);

然后在我准备好的声明中

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

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

4

2 回答 2

6

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

于 2013-06-27T14:37:49.567 回答
3

你可以这样尝试:

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

bigIntegerValue的实例在哪里java.math.BigInteger,它对我有用

于 2014-09-26T21:51:33.767 回答