0

我试图在主键是自动增量的 DB2 数据库表中存储一行。这工作正常,但我无法在成功插入行后如何检索主键值以进行进一步处理。你如何做到这一点?@JdbcInsert 只返回插入的行数......

4

2 回答 2

1

由于似乎没有办法使用 SSJS(至少对我而言),因此我将这段特定的逻辑从我的 SSJS 控制器移到了我为 JDBC 相关任务创建的 Java 助手 bean。语句能够返回生成的密钥(使用方法executeUpdate ())。所以我仍然通过@JdbcGetConnection 创建我的连接,然后将它交给bean。这是 bean 的有趣部分:

/**
 * SQL contains the INSERT Statement
 */    
public int executeUpdate(Connection conn, String SQL){

  int returnVal;
  Statement stmt = conn.createStatement();

  stmt.executeUpdate(SQL,
    Statement.RETURN_GENERATED_KEYS);

  if(!conn.getAutoCommit()) conn.commit();

  ResultSet keys = stmt.getGeneratedKeys();

  if(keys.next()){
    returnVal = keys.getInt(1);
  } else {
    returnVal = -1;
  }

  return returnVal;
}

如果一次插入多行,当然需要更改键检索处理。

于 2013-02-20T18:58:11.760 回答
0

在较新的 DB2 版本中,您可以将每个 Insert 转换为 Select 以获取自动生成的键列。一个例子是:

从 Final Table 中选择 keycol(插入表(col1,col2)值(?,?))

keycol 是您的身份列的名称

Select 可以使用与您通常的查询相同的 @Function 执行。

于 2013-04-10T14:11:46.707 回答