【问题标题】:How to get the ID of auto generated id from the Database [duplicate]如何从数据库中获取自动生成的 id 的 ID [重复]
【发布时间】:2012-11-13 11:26:15
【问题描述】:

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

我有以下表格:

customer(cid, ...)

book(cid, rid)

reservation(rid, ...)

我想在其表中添加预订,然后我想在book 中添加customerreservation 之间的关系。

我怎么知道rid 是自动生成的,当我执行查询时我确实得到了一个ResultSet 返回?

rid 是 Oracle 使用序列和触发器自动生成的。

【问题讨论】:

    标签: java oracle jdbc


    【解决方案1】:

    请参阅您的问题,我相信您正在使用语句。在这种情况下,您可以使用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);(或更新)颇为相似

    【讨论】:

      【解决方案2】:

      不知道 java/jsp 的情况如何,但如果它是关系数据库,则必须使用一组查询 - 即获取你知道的一个 id (cid),然后从 book 表中删除.我不知道有其他方法。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        相关资源
        最近更新 更多