gpt4 book ai didi

Sqlite JDBC 驱动程序不支持 RETURN_GENERATED_KEYS

转载 作者:行者123 更新时间:2023-12-03 00:37:22 26 4
gpt4 key购买 nike

我正在使用适用于 sqlite 的 Xerial 最新 jdbc 驱动程序(版本 3.7.2),它似乎不支持语句 RETURN_GENERATED_KEYS。我不断在 SQLException 中收到“未由 SQLite JDBC 驱动程序实现”的信息。

我真的不想再进行一次选择调用(例如,从任务中选择 id order by 1 desc limit 1 )以获得由自动增量字段创建的最新 ID。我需要使用该 id 来填充另一个表中的字段。

有没有更好的方法可以使用 sqlite-jdbc 驱动程序来实现此目的?

最佳答案

如果升级/替换 JDBC 驱动程序不是一个选项(SQLiteJDBC 似乎支持它),那么您确实需要触发 SELECT last_insert_rowid() 查询来获取生成的 key 。为了避免并发插入的竞争条件,请在事务中触发它。

connection = database.getConnection();
connection.setAutoCommit(false); // Starts transaction.
preparedStatement = connection.prepareStatement(INSERT_SQL);
preparedStatement.setSomething(something);
// ...
preparedStatement.executeUpdate();
statement = connection.createStatement();
generatedKeys = statement.executeQuery("SELECT last_insert_rowid()");
if (generatedKeys.next()) {
generatedKey = generatedKeys.getLong(1);
}
connection.commit(); // Commits transaction.

关于Sqlite JDBC 驱动程序不支持 RETURN_GENERATED_KEYS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com