如何从数据库中获取自动生成的ID的ID

时间:2012-11-26 00:35:05

标签: java oracle jdbc

  

可能重复:
  How to get the insert ID in JDBC?

我有以下表格:

customer(cid, ...)

book(cid, rid)

reservation(rid, ...)

我想在其表格中添加预订,然后我想在bookcustomer之间的reservation中添加关系。

如果rid是自动生成的,我怎么知道?当我执行查询时,我确实收到了ResultSet

使用序列和触发器从Oracle自动生成rid

2 个答案:

答案 0 :(得分:3)

请参阅您的问题我相信您正在使用声明。在这种情况下,您可以使用Statement.RETURN_GENERATED_KEYS。另外请考虑这个link,因为下面的解决方案可能会让Oracle数据库感到困惑。

这是一个小例子:

Connection connection = database.getConnection();
PreparedStatement statement = connection.prepareStatement(myQuery, Statement.RETURN_GENERATED_KEYS);
int count = statement.executeUpdate();
if(count <= 0){
 //value not inserted
}

ResultSet results = statement.getGeneratedKeys();

if(results.next){
 System.out.println(generatedKeys.getLong(1));
}

如果您正在使用ORM:

如果您正在使用JPA entitiyManager.merge(entity);(或更新),则应返回带ID的持久实例。 与hibernate session.merge(entity);(或更新)

非常相似

答案 1 :(得分:1)

Dunno如何使用java / jsp,但如果它是一个关系数据库,你必须使用一组查询 - 即得到你知道的一个id(cid)然后从书表中删除。我不知道其他任何方式。

希望有所帮助。