关于如何通过java.sql.Statement.executeUpdate从call读取分配给新创建记录的自动递增标识字段的建议
我知道如何在几个数据库平台上用SQL语言来做这件事,但我想知道java.sql中有哪些独立于数据库的接口来做这件事,以及关于人们在跨数据库平台上的经验的任何意见。
发布于 2008-09-16 20:04:51
下面的代码片段应该可以做到这一点:
PreparedStatement stmt = conn.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS);
// ...
ResultSet res = stmt.getGeneratedKeys();
while (res.next())
System.out.println("Generated key: " + res.getInt(1));已知这适用于以下数据库
对于不起作用的数据库(HSQLDB、Oracle、PostgreSQL等),您需要使用特定于数据库的技巧。例如,在PostgreSQL上,您将针对相关序列调用SELECT NEXTVAL(...)。
请注意,executeUpdate(...)的参数是类似的。
发布于 2008-09-16 20:08:40
ResultSet keys = statement.getGeneratedKeys();稍后,只需迭代ResultSet即可。
发布于 2008-09-16 19:59:28
我总是在insert之后使用query进行第二次调用。
你可以使用像hibernate这样的ORM。我认为它为你做了这些事情。
https://stackoverflow.com/questions/76254
复制相似问题