【发布时间】:2011-12-01 20:52:40
【问题描述】:
我几乎一整天都在试图弄清楚这一点,经过几次尝试,我想我会看看这里是否有人可能有一些想法。欢迎任何帮助。
我有一个非常简单的 ID 和姓名表,我想获取表中的最后一个 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");}
我还尝试使用更简单的内置函数来做到这一点:
PlayKey = sqlite3_last_insert_rowid(database);
这两种尝试都导致错误的值 0。
【问题讨论】: