首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有oracle NUMBER类型的jdbc预准备语句

具有oracle NUMBER类型的jdbc预准备语句
EN

Stack Overflow用户
提问于 2013-06-27 22:31:51
回答 2查看 14K关注 0票数 5

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

代码语言:javascript
复制
NUMBER(38,0)
NUMBER(20,0)
NUMBER(16,0)

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

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

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

代码语言:javascript
复制
 BigInteger one = new BigInteger(1);

那么在我的preparedStatement中它将是

代码语言:javascript
复制
 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TABLE(bigInt) VALUES(?)");
 pstmt.setLong(1, one);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-27 22:37:50

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

票数 6
EN

Stack Overflow用户

发布于 2014-09-27 05:51:34

您可以尝试这样做:

代码语言:javascript
复制
 oracle.sql.NUMBER numberValue = new oracle.sql.NUMBER(bigIntegerValue);
 cs.setObject(id, numberValue, OracleTypes.NUMBER);

bigIntegerValuejava.math.BigInteger的一个实例时,它适用于我

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17345975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档