我有这样的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);
我希望能够做的是获取为该语句生成的密钥。现在我以前已经这样做了,但没有设置resultset typescroll参数。似乎也没有这样的论点:
PreparedStatement stmt = con.prepareStatement(SQL,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, Statement.RETURN_GENERATED_KEYS)
我想知道的是:如何将结果集类型设置为不区分类型滚动并获取生成的密钥?
Statement#getGeneratedKeys()
返回一个ResultSet
,您可以使用它作为检索密钥
ResultSet rsKeys = statement.getGeneratedKeys();
if (rsKeys.next()) {
person.setId(rsKeys.getLong(1));
}
如何将结果集类型设置为不区分类型滚动并获取生成的密钥?
这样做没有意义,因为只有在执行插入之后,才能检索密钥。而您只想为结果集设置滚动类型,即在查询之后。因此,这两件事是互斥的,因此API显然不支持它
statement.getGeneratedKeys();
将有助于