回答
我檢查了來源。 insert
方法使用sqlite3_last_insert_rowid
函數返回一個id。 根據文檔:https://www.sqlite.org/c3ref/last_insert_rowid.html 行標識是隱藏列或類型爲INTEGER PRIMARY KEY
的列(如果已聲明)。
所以這是默認_ID
柱通常
我有相當多的與此有關MySQL的問題,LAST_INSERT_ID是不可靠的方式來獲得ID,如果有用戶錘擊數據庫時,ID返回可能不是您運行的查詢插入的ID,其他幾個用戶可能會影響此ID的返回。我們的服務器平均每分鐘有7000個用戶在捶打,而且它總是絆倒。
我們的解決方案是使用您插入的查詢中的數據,然後使用該數據搜索該結果。無論如何,你正在做一個尋找最後一個ID的請求。所以你不妨做一個SELECT ID FROM表,其中field = var和field = var來獲得id。它在查詢中性能稍差,但返回的結果更加可靠。
中有詳細記錄這要求每行的列值是唯一的(或者大多數是唯一的),否則會有返回多個ID的風險。 – 2016-06-20 01:18:00
如果使用ContentValues:
DBHelper db =new DBHelper();// your dbHelper
ContentValues values = new ContentValues();
values.put("firstName","Ahmad");
values.put("lastName","Aghazadeh");
long insertedId= db.getSQLiteDatabase().insert("user", "", values) ;
如果查詢EXEC使用select last_insert_rowid()
String sql = "INSERT INTO [user](firstName,lastName) VALUES (\"Ahmad\",\"Aghazadeh\"); select last_insert_rowid()";
DBHelper itemType =new DBHelper();// your dbHelper
c = db.rawQuery(sql, null);
if (c.moveToFirst())
result = c.getLong(0);
人們可以使用last_insert_rowid()
簡單地得到最後插入的行_id。示例代碼如下。
/**
* Return Last inserted row id(auto incremented row) (_id)
* @return
*/
public int getLastAddedRowId() {
String queryLastRowInserted = "select last_insert_rowid()";
final Cursor cursor = database.rawQuery(queryLastRowInserted, null);
int _idLastInsertedRow = 0;
if (cursor != null) {
try {
if (cursor.moveToFirst()) {
_idLastInsertedRow = cursor.getInt(0);
}
} finally {
cursor.close();
}
}
return _idLastInsertedRow;
}
- 1. 獲取插入後產生的ID
- 2. Slick/Oracle PLAIN SQL在插入後獲取自動生成的ID
- 3. 插入後獲取自動生成的ID
- 4. 獲取後插入ID春
- 5. 插入後獲取ID
- 6. Mysql插入獲取ID然後插入返回的Id
- 7. 獲取最後生成的id asp.net
- 8. 獲取最後插入的行的ID
- 9. 獲取最後插入的值的ID
- 10. 如何獲取插入表的行的自動生成的id?
- 11. 獲取最後插入的ID
- 12. Node + Mongoose:獲取最後插入的ID?
- 13. 如何獲取最後插入的ID?
- 14. 獲取最後一個插入的ID
- 15. 插入重複更新獲取「新」生成的ID
- 16. 插入行並生成ID
- 17. 獲取mysql最後插入ID,插入記錄後使用PDO
- 18. 插入請求後獲取id值
- 19. 插入後ASP.NET庫獲取ID
- 20. ef4 poco,插入後如何獲取id?
- 21. 獲取最後插入ID ZF2
- 22. 插入後獲取ID在SQL Server中
- 23. 獲取最後一個插入ID
- 24. 獲取插入的ID如果插入發生REPLACE INTO
- 25. 獲取被插入的記錄的ID插入後
- 26. TSQL獲取插入的ID
- 27. 獲取插入的ID MYSQL
- 28. SQL插入Spring JDBC後獲取生成的密鑰
- 29. Postgresql,使用JDBC插入後獲取生成的序列
- 30. 插入,獲取ID並同時插入
我在規格上閱讀。 「返回:新插入的行的行ID,如果發生錯誤,則返回-1」rowId與我生成的字段「id主鍵autoincrement」相同? – 2011-03-23 18:28:42
是的,它是一樣的。 – GrAnd 2011-03-23 18:33:25
謝謝!經過測試和批准。 – 2011-03-23 18:35:38