我幾乎一整天都在想這個問題,經過多次嘗試,我想我會看看這裏有沒有人可能有一些想法。歡迎任何幫助。iPhone iOS:SQLite3無法獲取表中的最後一個ID值
我有一個非常簡單的ID和Name的表,我想獲得表中的最後一個ID值。
儘管我沒有收到任何編譯錯誤或運行時錯誤,但我得到了錯誤的ID值。根據SQLiteManager(它可以直接檢查數據庫),我的最大ID是10,但是,不管我做什麼,我只是得到PlayKey的值爲0。
這裏的定義:
//CREATE THE Plays TABLE
char *errorMsg;
NSString *createSQL = @"CREATE TABLE IF NOT EXISTS Plays (ID integer PRIMARY KEY AUTOINCREMENT,PlayName text);";
if (sqlite3_exec(database, [createSQL UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK){
sqlite3_close(database);
NSAssert1(0, @"Error creating table: %s", errorMsg);
}
和這裏就是我試圖獲取插入它的最後一個ID:使用一個更簡單的內置
NSString *query3 = [NSString stringWithFormat:@"SELECT MAX(ID) FROM Plays"];
sqlite3_stmt *statement3;
if (sqlite3_prepare_v2(database, [query3 UTF8String], -1, &statement3, nil) == SQLITE_OK) {
PlayKey = sqlite3_column_int(statement3, 0);
NSString* msg4 = [NSString stringWithFormat:@"This worked! The PlayKey was %d", PlayKey];
NSLog(msg4);
}
if (sqlite3_step(statement3) !=SQLITE_DONE) {NSLog(@"Error inserting to Steps");}
我也試圖做到這一點in功能:
PlayKey = sqlite3_last_insert_rowid(database);
這兩個嘗試都會導致0的值不正確。
啊,我明白了。謝謝!可能不是最有效的方法,但它有正確的ID! – USS1994