当前位置:  开发笔记 > 编程语言 > 正文

使用Java中的sqlite获取最后插入的id的最佳方法是什么?

如何解决《使用Java中的sqlite获取最后插入的id的最佳方法是什么?》经验,为你挑选了2个好方法。

使用Java中的sqlite获取最后插入的id的最佳方法是什么?谷歌给了我不同的答案 - 有人说选择last-insert-rowid; 其他人说call statement.getGeneratedKeys().什么是最好的路线?(我只是想返回id,而不是用于其他插入或任何东西.)



1> David Citron..:

这两种方法都执行相同的SQL语句,但java.sql.Statement.getGeneratedKeys()对不同的底层数据库更具可移植性.

使用sqlite3_last_insert_rowid()C API函数或last_insert_rowid()SQL函数是检索上一次插入期间生成的rowid的正确方法.

SQLite支持SQL标量函数语法:

SELECT function-name();

因此,如果您无法直接访问C API,则可以last_insert_rowid()通过SELECT语句调用标量函数.

如果你看一下源代码的SQLiteJDBC实现(是你使用这是什么?)你会看到,这正是JDBC的包装的作者这样做:

ResultSet getGeneratedKeys() throws SQLException {
    if (getGeneratedKeys == null) getGeneratedKeys = conn.prepareStatement(
        "select last_insert_rowid();");
    return getGeneratedKeys.executeQuery();
}



2> Brian..:

getGeneratedKeys()如果您的JDBC驱动程序支持它,请使用 您不希望在插入后尝试自己获取密钥.如果你的驱动程序不支持,getGeneratedKeys()那么我会在插入之前从密钥中获取下一个值.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有