從Java使用sqlite獲取最後插入的id的最佳方式是什麼?谷歌給了我不同的答案 - 有人說選擇最後插入rowid;別人說調用statement.getGeneratedKeys()。最好的路線是什麼? (我只想返回id,不用於其他插入或任何其他操作。)從Java使用sqlite獲取最後插入的id的最佳方式是什麼?
12
A
回答
9
如果您的JDBC驅動程序支持它,請使用getGeneratedKeys()。在插入之後,你不想試圖讓自己得到鑰匙。如果您的驅動程序不支持getGeneratedKeys(),那麼在插入之前,我會從鍵中獲取下一個值。
20
任一方法都執行相同的確切SQL語句,但java.sql.Statement.getGeneratedKeys()
更容易移植到不同的底層數據庫。
使用sqlite3_last_insert_rowid()
C API函數或last_insert_rowid()
SQL函數是檢索上次插入過程中生成的rowid的正確方法。
SQLite支持的SQL scalar function語法爲:
SELECT function-name();
因此,如果您不能直接訪問該C API,你可以通過SELECT
語句調用標量函數last_insert_rowid()
。
如果你看一下source code爲SQLiteJDBC實現(這是你用什麼?)你會看到,這正是JDBC的包裝的作者做:
ResultSet getGeneratedKeys() throws SQLException {
if (getGeneratedKeys == null) getGeneratedKeys = conn.prepareStatement(
"select last_insert_rowid();");
return getGeneratedKeys.executeQuery();
}
相關問題
- 1. 獲取SQLite上最後一個插入行的ID的最佳方式
- 2. 使用EF在oracle中獲取插入ID的最佳方式是什麼?
- 3. 什麼是使用asp.net從URL獲取Id的最佳方式mvc
- 4. 廚師從用戶獲取UID的最佳方式是什麼?
- 5. 什麼是使用java提取zip文件的最佳方式
- 6. 鍵入()的最佳方式是什麼?
- 7. 在AsyncTask中獲取/使用Context的最佳方式是什麼?
- 8. 什麼是使用PHP獲取URL目錄的最佳方式?
- 9. 什麼是爲SQL插入生成ID的最佳方法?
- 10. 從配置文件獲取值的最佳方式是什麼?
- 11. 從div獲取內容的最佳方式是什麼?
- 12. 從jqGrid單元獲取數據的最佳方式是什麼?
- 13. 從app.config獲取數據的最佳方式是什麼?
- 14. 什麼是從目錄獲取csv文件的最佳方式?
- 15. 從NHibernate獲取聚合結果的最佳方式是什麼?
- 16. 從detailViewController獲取布爾值的最佳方式是什麼?
- 17. 什麼是從標準輸入讀取的最佳方式?
- 18. 獲取Perl數組的最後N個元素的最佳方式是什麼?
- 19. 獲取最後插入的行的ID
- 20. 獲取最後插入的值的ID
- 21. 從單詞組中獲取電子郵件ID的最佳方式是什麼?
- 22. 獲取當前用戶的SID的最佳方式是什麼?
- 23. 什麼是從後端插入<wbr />標籤的最佳方式
- 24. 捕獲圖像後調用StartPreview()的最佳方式是什麼?
- 25. 最佳的插入方式
- 26. 獲取mysql最後插入ID,插入記錄後使用PDO
- 27. 什麼是使用Java反射獲取屬性值的最佳方式
- 28. 獲取最後插入的ID
- 29. Node + Mongoose:獲取最後插入的ID?
- 30. 如何獲取最後插入的ID?
以何種方式是「插入前鍵的下一個值」比「插入後的最大值」更好嗎?兩者都具有相同類型的競爭條件,並且都依賴於單調遞增的密鑰。 – 2013-03-19 14:54:43