1

我正在尝试从序列中获取生成的密钥。(使用 Servlets 和 Oracle10)

以下是我的代码:

query ="insert into TABLE_NAME(COL1,COL2,COL3) values(sysdate,?,SEQ_NAME.nextval)";
PreparedStatement pstmt = con.prepareStatement(query,new String[]{"COL3"});  //Getting error on this line
pstmt.setString(1,Str2);
pstmt.executeUpdate();

ResultSet keyset = pstmt.getGeneratedKeys();
if(keyset.next())
{
    genKey = keyset.getString(1);
}

但我得到了例外:

java.sql.SQLException: Unsupported feature

几天前,这段代码运行良好。那么这段代码现在不起作用的原因可能是什么?(我没有更改 JDBC 驱动程序战争文件)

提前致谢。

还有另一种获取查询中序列生成的值的方法吗?

4

1 回答 1

1

下载最新的JDBC驱动,我想你至少需要10.2.0.1的驱动和db也需要10.2+

http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc101040.html

或者先获取序列值

String sqlForSeq = "select SEQ_NAME.NEXTVAL from dual";
ResultSet rs = stmt.executeQuery(sqlForSeq);
if (rs.next()) {
    logSeq = rs.getString("NEXTVAL");
}
于 2013-10-05T12:43:31.803 回答