栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java

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

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以获取最后生成的密钥。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370685.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号