首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.nextval JDBC插入问题

.nextval JDBC插入问题
EN

Stack Overflow用户
提问于 2010-12-21 12:40:12
回答 1查看 27.3K关注 0票数 8

我尝试以序列.nextval作为主键插入到表中,Java语言中的sql是

代码语言:javascript
复制
sql = "INSERT INTO USER 
         (USER_PK, ACCOUNTNUMBER, FIRSTNAME, LASTNAME, EMAIL ) 
       VALUES 
         (?,?,?,?,?)";
   ps = conn.prepareStatement(sql);
   ps.setString(1, "User.nextval");
   ps.setString(2, accountNumber);
   ps.setString(3, firstName);
   ps.setString(4, lastName);
   ps.setString(5, email);

但是,错误是ORA-01722: invalid number

所有其他字段都是正确的,我认为是顺序问题,这是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-21 12:47:17

问题是第一列是数字数据类型,但是您的预准备语句提交的是string/VARCHAR数据类型。语句是按原样运行的,Oracle没有机会转换您使用的nextval来获取序列值。

下面是一种通过Java的PreparedStatement语法实现的替代方法:

代码语言:javascript
复制
sql = "INSERT INTO USER 
        (USER_PK, ACCOUNTNUMBER, FIRSTNAME, LASTNAME, EMAIL ) 
       VALUES 
        (user.nextval, ?, ?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, accountNumber);
ps.setString(2, firstName);
ps.setString(3, lastName);
ps.setString(4, email);

这假设user是一个现有的序列--根据需要进行更改。

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

https://stackoverflow.com/questions/4496336

复制
相关文章

相似问题

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