首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JDBC中获取插入ID?

如何在JDBC中获取插入ID?
EN

Stack Overflow用户
提问于 2009-12-16 22:57:58
回答 8查看 321.6K关注 0票数 417

我想使用JDBC在数据库(在我的例子中是Microsoft SQL Server )中INSERT一条记录。同时,我想获取insert ID,如何使用JDBC API来实现?

EN

回答 8

Stack Overflow用户

发布于 2011-06-24 13:52:21

我正在从一个基于单线程R2的应用程序中访问Microsoft SQL Server2008JDBC,并在没有使用RETURN_GENERATED_KEYS属性或任何PreparedStatement的情况下拉回最后一个ID。看起来像这样:

代码语言:javascript
复制
private int insertQueryReturnInt(String SQLQy) {
    ResultSet generatedKeys = null;
    int generatedKey = -1;

    try {
        Statement statement = conn.createStatement();
        statement.execute(SQLQy);
    } catch (Exception e) {
        errorDescription = "Failed to insert SQL query: " + SQLQy + "( " + e.toString() + ")";
        return -1;
    }

    try {
        generatedKey = Integer.parseInt(readOneValue("SELECT @@IDENTITY"));
    } catch (Exception e) {
        errorDescription = "Failed to get ID of just-inserted SQL query: " + SQLQy + "( " + e.toString() + ")";
        return -1;
    }

    return generatedKey;
} 

这篇博文很好地隔离了三个主要的SQL Server“最后ID”选项:http://msjawahar.wordpress.com/2008/01/25/how-to-find-the-last-identity-value-inserted-in-the-sql-server/ -还不需要另外两个。

票数 8
EN

Stack Overflow用户

发布于 2015-12-14 16:39:15

如果在使用Statement.RETURN_GENERATED_KEYS时遇到“不支持的功能”错误,请尝试执行以下操作:

代码语言:javascript
复制
String[] returnId = { "BATCHID" };
String sql = "INSERT INTO BATCH (BATCHNAME) VALUES ('aaaaaaa')";
PreparedStatement statement = connection.prepareStatement(sql, returnId);
int affectedRows = statement.executeUpdate();

if (affectedRows == 0) {
    throw new SQLException("Creating user failed, no rows affected.");
}

try (ResultSet rs = statement.getGeneratedKeys()) {
    if (rs.next()) {
        System.out.println(rs.getInt(1));
    }
    rs.close();
}

其中BATCHID是自动生成的id。

票数 8
EN

Stack Overflow用户

发布于 2019-05-21 18:35:58

您可以使用以下java代码来获取新插入的id。

代码语言:javascript
复制
ps = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
ps.setInt(1, quizid);
ps.setInt(2, userid);
ps.executeUpdate();

ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
    lastInsertId = rs.getInt(1);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1915166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档