在 Java 中插入 SQL 后访问自动递增标识字段

2022-09-03 01:04:37

关于如何从调用到读取分配给新创建记录的自动递增标识字段的任何建议?java.sql.Statement.executeUpdate

我知道如何在 SQL 中为多个数据库平台执行此操作,但想知道存在哪些独立于数据库的接口来执行此操作,以及有关人们跨数据库平台使用此方面的经验的任何输入。java.sql


答案 1

以下代码的片段应该做ya':

PreparedStatement stmt = conn.prepareStatement(sql, 
                                 Statement.RETURN_GENERATED_KEYS);
// ...

ResultSet res = stmt.getGeneratedKeys();
while (res.next())
    System.out.println("Generated key: " + res.getInt(1));

已知这适用于以下数据库

  • 德比
  • 我的SQL
  • SQL Server

对于它不起作用的数据库(HSQLDB,Oracle,PostgreSQL等),您将需要使用特定于数据库的技巧。例如,在PostgreSQL上,您可以调用所讨论的序列。SELECT NEXTVAL(...)

请注意,的参数是类似的。executeUpdate(...)


答案 2
ResultSet keys = statement.getGeneratedKeys();

稍后,只需循环访问 ResultSet。


推荐