当前位置: 首页 > 面试题库 >

.nextval JDBC插入问题

慕容俭
2023-03-14
问题内容

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

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

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


问题答案:

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

这是通过Java的PreparedStatement语法的替代方法:

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是一个现有序列-更改为适合。



 类似资料:
  • 问题内容: 我尝试多次插入但它给我错误 -http://pastie.org/7337421 我究竟做错了什么 ? 问题答案: 您可以尝试以下方法:

  • 问题内容: 我正在尝试将数据从此链接插入到我的SQL Server https://www.ian.com/affiliatecenter/include/V2/CityCoordinatesList.zip 我创建了表 我正在运行以下脚本来进行批量插入 但是批量插入失败,并出现以下错误 当我使用google时,我发现了几篇文章,指出问题可能出在RowTerminator上,但我尝试了诸如/ n

  • “病理诊断”用的是一个wangedtior编辑器,在当前页下面有个按钮直接insertTxt就可以把文本插到“病理诊断”的编辑器内,但是右边的是另外一个按钮,点每一项,会调“病理诊断”页面内的一个函数也是插入一个文本,但是问题来了,好像因为右边的在另一个组件,点的时修改“病理诊断”就失去焦点了,所以插入不起作用,这个怎么解决?

  • 我在尝试将记录插入数据库时遇到错误。 错误如下: 守则: 数据库:

  • WooCommerce的Shop页面虽然有固定格式,依然可以在编辑器中输入内容,输入shortcode时会强制执行wpautop,导致shortcode输出带上很多p和br标签,其自带shortcode亦无法幸免,使用WC 2.2.4时发现了这个问题。 问题描述 例如在商店页面使用featured_products shortcode,产生的结果如下图所示,箭头所指的位置是强制将换行符转换成p导致

  • 问题内容: 我创建了一个JDBC附加程序,并绑定了ColumnConfig和DataSourceConnectionSource。 尝试在数据库中插入记录时(Logger.debug(“ Test”))。我遇到了以下异常。 谢谢 问题答案: 抱歉,我之前的回答不正确。可以通过配置修改此行为。默认情况下,所有列(除非除外)都被视为unicode字符串,并且该值是通过方法插入的。如果您使用配置列,则将