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