如何在JDBC中获取插入ID?

如何在JDBC中获取插入ID?,第1张

如何在JDBC中获取插入ID?

如果它是自动生成的密钥,那么你可以使用

Statement#getGeneratedKeys()
它。你需要Statement使用与用于相同的名称进行调用INSERT。首先,你需要创建
Statement.RETURN_GENERATED_KEYS
用于通知JDBC驱动程序以返回键的语句。

这是一个基本示例:

public void create(User user) throws SQLException {    try (        Connection connection = dataSource.getConnection();        PreparedStatement statement = connection.prepareStatement(SQL_INSERT,     Statement.RETURN_GENERATED_KEYS);    ) {        statement.setString(1, user.getName());        statement.setString(2, user.getPassword());        statement.setString(3, user.getEmail());        // ...        int affectedRows = statement.executeUpdate();        if (affectedRows == 0) { throw new SQLException("Creating user failed, no rows affected.");        }        try (ResultSet generatedKeys = statement.getGeneratedKeys()) { if (generatedKeys.next()) {     user.setId(generatedKeys.getLong(1)); } else {     throw new SQLException("Creating user failed, no ID obtained."); }        }    }}

请注意,你是否依赖JDBC驱动程序。当前,大多数最新版本都可以使用,但是如果我没错,Oracle JDBC驱动程序仍然有些麻烦。MySQL和DB2已经支持它很久了。PostgreSQL不久前就开始支持它。我从未评论过MSSQL,因为我从未使用过它。

对于Oracle,你可以在同一事务中直接在CallableStatementwith之后调用

with RETURNING
子句或
SELECT CURRVAL(sequencename)
(或执行此 *** 作的任何特定于DB的语法)INSERT以获取最后生成的密钥.



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4900256.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存