java-如何获取自动生成的键并设置结果集类型?

我有以下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检索键为

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

How can I set the resultset type to typescroll insensitive AND get generated keys?

这样做是没有意义的,因为您可以期望仅在执行插入操作后才能检索键.虽然您只想为结果集(即查询后)设置滚动类型.因此,这两件事是互斥的,因此API显然不支持它.

上一篇:java-如何两次运行Resultsetet.next()?


下一篇:使用JAVA类从元数据DatabaseMetaData获取外键并引用特定数据库表的表名