gpt4 book ai didi

java - 带有 Statement.RETURN_GENERATED_KEYS 的 PreparedStatement

转载 作者:IT老高 更新时间:2023-10-28 11:46:18 26 4
gpt4 key购买 nike

某些 JDBC 驱动程序返回 Statement.RETURN_GENERATED_KEYS 的唯一方法是执行以下操作:

long key = -1L;
Statement statement = connection.createStatement();
statement.executeUpdate(YOUR_SQL_HERE, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = statement.getGeneratedKeys();
if (rs != null && rs.next()) {
key = rs.getLong(1);
}

有没有办法对 PreparedStatement 做同样的事情?


编辑

我询问是否可以对 PreparedStatement 执行相同操作的原因考虑以下情况:

private static final String SQL_CREATE = 
"INSERT INTO
USER(FIRST_NAME, MIDDLE_NAME, LAST_NAME, EMAIL_ADDRESS, DOB)
VALUES (?, ?, ?, ?, ?)";

USER 表中有一个 PRIMARY KEY (USER_ID) 这是一个 BIGINT AUTOINCREMENT (因此你看不到它SQL_CREATE 字符串。

现在,我使用 PreparedStatement.setXXXX(index, value) 填充 ?。我想返回 ResultSet rs = PreparedStatement.getGeneratedKeys()。我怎样才能做到这一点?

最佳答案

您可以使用 prepareStatement 方法来获取额外的 int 参数

PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)

对于某些 JDBC 驱动程序(例如 Oracle),您必须明确列出生成键的列名或索引:

PreparedStatement ps = con.prepareStatement(sql, new String[]{"USER_ID"})

关于java - 带有 Statement.RETURN_GENERATED_KEYS 的 PreparedStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4224228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com