【问题标题】:Using DB2 Sequence in Java Prepared Statement在 Java Prepared Statement 中使用 DB2 序列
【发布时间】:2014-12-30 19:41:00
【问题描述】:

如果preparedstatement 中的占位符是0,我想获得db2 序列的下一个值。我怎样才能做到这一点 。

PreparedStmt.setLong(1, attributeID);

所以如果attributeID0,我想从序列中获取下一个值,否则我使用属性 ID。

我尝试过使用

PreparedStmt.setObject(1, attributeID > 0 ? attributeID : next val for my seq);

但这不起作用!

【问题讨论】:

  • ...如果您尝试处理插入新记录的情况,通常您不会将参数设置为任何值(将其保留为空)。否则,我有点担心你被允许为某些东西指定一个新值(你可能会遇到冲突)。

标签: java jdbc db2


【解决方案1】:

这很简单,只需像使用 executeQuery() 方法获取结果集一样获取序列即可。那么select语句就是:

SELECT SEQ_NAME.NEXTVAL FROM SYSIBM.SYSDUMMY1

另一部分是if语句。这就是您需要做的所有事情。

【讨论】:

    【解决方案2】:

    您可以将主键列声明为

    ATTRIBUTEID BIGINT GENERATED BY DEFAULT AS IDENTITY
    

    要插入具有特定值的行,请在 sql 中包含主键列并将其值设置为:

    PreparedStmt.setLong(1, attributeID);
    

    要在数据库生成键值的位置插入一行,请省略 sql 中的主键列,并且不要在准备好的语句中设置其值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多