Best way to get the ID of the last inserted row on SQLite

前端 未结 4 1120
日久生厌
日久生厌 2020-12-14 01:40

On iPhone, what\'s the best way to get the ID of the last inserted row on an SQLite Database using FMDB ?

Is there a better way rather than doing :

S         


        
相关标签:
4条回答
  • 2020-12-14 02:01

    For swift 4 use this code

    let lastRowId = sqlite3_last_insert_rowid(db)
    

    for example

    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
    
    0 讨论(0)
  • 2020-12-14 02:08

    Try the following:

    var rowid: Int = Int(contactDB.lastInsertRowId())
    
    0 讨论(0)
  • 2020-12-14 02:10

    If you can guarantee that your ID column is an auto-increment column, MAX(ID) is fine.

    But to cover any case, there's a specialized SQLite function called LAST_INSERT_ROWID():

    SELECT LAST_INSERT_ROWID();
    

    In FMDB, you use the -lastInsertRowId method (which internally runs the above):

    int lastId = [fmdb lastInsertRowId];
    
    0 讨论(0)
  • 2020-12-14 02:12

    The function sqlite3_last_insert_rowid() is what you're looking for. Having just checked out the source code for FMDB, there seems to be a method on FMDatabase called -lastInsertRowId that wraps the function.

    0 讨论(0)
提交回复
热议问题