获取插入行的id

时间:2014-01-10 20:03:58

标签: java jdbc

我通过普通的旧JDBC将记录插入到数据库表中(因为这是我正在处理的项目中的设置..尚未迁移到Hibernate)。

这是我的表结构

employee (empid int indentity not null, empName);

当我尝试通过JDBC代码插入记录时

insert into employee(empName) values('something')

它可以工作并插入记录。 但是我需要针对插入的行获取id。我可以尝试执行单独的选择查询来获取插入的行,但如果2个员工姓名相同,则可能无法获得正确的插入记录ID。

如何使用JDBC获取插入的记录ID。我正在使用preparedStatment.executeUpdate根据是否插入记录返回0或1。

3 个答案:

答案 0 :(得分:2)

根据声明JavaDoc,您可以像这样使用“RETURN_GENERATED_KEYS” -

stmt.execute("insert into employee(empName) values('something')",
    Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
if (rs.next()) {
  return rs.getLong(1); // for example.
}

答案 1 :(得分:1)

您想要阅读JDBC Statement#getGeneratedKeys()的文档,您必须在插入后调用它。这假设您的数据库支持检索生成的密钥,而不是所有数据库都这样做。

答案 2 :(得分:0)

取决于db:

Oracle& PostgreSQL :当您使用序列时,获取返回的值

Mysql mysql_insert_id()

SQL Server @@IDENTITY

自定义方式select max(id) from table

纯java(支持JDBC驱动程序):请参阅Statement.getGeneratedKeys() 检索由于执行此Statement对象而创建的任何自动生成的密钥。