ios 获取SQLite上最后插入行的ID的最佳方法

eivgtgni  于 2022-12-15  发布在  iOS
关注(0)|答案(4)|浏览(164)

在iPhone上,使用FMDB获取SQLite数据库中最后插入行的ID的最佳方法是什么?
有没有比这样做更好的方法:

SELECT MAX(ID)
bihw5rsg

bihw5rsg1#

如果可以保证ID列是自动递增列,那么MAX(ID)就可以了。
但是为了涵盖任何情况,有一个专门的SQLite函数LAST_INSERT_ROWID()

SELECT LAST_INSERT_ROWID();

在FMDB中,使用-lastInsertRowId方法(在内部运行上面的代码):

int lastId = [fmdb lastInsertRowId];
epggiuax

epggiuax2#

函数sqlite3_last_insert_rowid()就是我们要找的,我们刚刚查看了FMDB的源代码,FMDatabase上似乎有一个名为-lastInsertRowId的方法 Package 了这个函数。

xdyibdwo

xdyibdwo3#

swift 5使用此代码

let lastRowId = sqlite3_last_insert_rowid(db)

例如

if sqlite3_exec(db, stringSql, nil, nil, nil) != SQLITE_OK {
    let errmsg = String(cString: sqlite3_errmsg(db)!)
    print("error Insert: \(errmsg)")
}

let lastRowId = sqlite3_last_insert_rowid(db);
print(lastRowId) // its gives you last insert id

if sqlite3_finalize(statement) != SQLITE_OK {
    let errmsg = String(cString: sqlite3_errmsg(db)!)
    print("error finalizing prepared statement: \(errmsg)")
}
statement = nil

//*** close data base
if sqlite3_close(db) != SQLITE_OK {
    print("error closing database")
}
db = nil

c9x0cxw0

c9x0cxw04#

请尝试以下操作:

var rowid: Int = Int(contactDB.lastInsertRowId())

相关问题