我通过普通的旧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。
答案 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对象而创建的任何自动生成的密钥。