如何获取自动生成的密钥并设置结果集类型?

时间:2013-07-06 18:41:25

标签: java sql prepared-statement resultset

我有这个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)

我想知道的是:如何将结果集类型设置为typescroll不敏感并获取生成的密钥?

2 个答案:

答案 0 :(得分:3)

Statement#getGeneratedKeys()会返回ResultSet,您可以将其用作检索

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

如何将结果集类型设置为typescroll不敏感并获取生成的密钥?

执行此操作没有意义,因为只有在执行插入之后才能检索。虽然您只想为结果集设置滚动类型,即在查询之后。所以,这两件事是相互排斥的,因此API显然不支持它。

答案 1 :(得分:0)