1

シーケンスから生成されたキーを取得しようとしています。(サーブレットと 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 ドライバーの war ファイルは変更していません)

前もって感謝します。

クエリでシーケンスによって生成された値を取得する別の方法はありますか?

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 に答える