4

私はこのSQL文を持っています:

con = cpds.getConnection();
            con.setAutoCommit(false);
            SQL = "INSERT INTO person(accountID,addressID,lastName,firstName,middleName,suffix,gender,birthDate, [language], ethinicity) "
                    + "VALUES(?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement stmt = con.prepareStatement(SQL,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

私ができるようにしたいのは、このステートメントの生成されたキーを取得することです。これは以前に行ったことがありますが、結果セットの typescroll パラメータを設定していません。これを行う議論もないようです:

PreparedStatement stmt = con.prepareStatement(SQL,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, Statement.RETURN_GENERATED_KEYS)

私が知りたいのはこれです:結果セットタイプをタイプスクロールインセンシティブに設定し、生成されたキーを取得するにはどうすればよいですか?

4

2 に答える 2

5

Statement#getGeneratedKeys()キーResultSet取得するために使用できる を返します

ResultSet rsKeys = statement.getGeneratedKeys();
if (rsKeys.next()) {
    person.setId(rsKeys.getLong(1));
}

結果セットのタイプを typescroll insensitive に設定し、生成されたキーを取得するにはどうすればよいですか?

insertを実行した後にのみキーを取得することが期待できるため、これを行うことは意味がありません。結果セット、つまりクエリの後にのみスクロールタイプを設定したい場合があります。したがって、2 つのことは相互に排他的であるため、API は明らかにそれをサポートしていません。

于 2013-07-06T18:47:18.573 に答える
0

statement.getGeneratedKeys();役立つだろう

于 2013-07-06T18:44:20.927 に答える