ひゃー。
アプリに FMDB を実装しました。これを使用して、データベースの1つから最後の行IDを取得しようとしています
FMDatabase *bdb=[FMDatabase databaseWithPath:databasePath];
NSString *str;
if([bdb open]){
int lastId=[bdb lastInsertRowId];
FMResultSet *s = [bdb executeQuery:[NSString stringWithFormat:@"SELECT budget FROM data WHERE ROWID='%d'",lastId]];
if([s next])
{
str= [s stringForColumnIndex:0];
}
}
私が抱えている問題は、現在データベースに 3 つのエントリがあるにもかかわらず、 lastId が常に 0 であることです。Any1は、なぜこれが起こっているのか考えていますか?
編集: データベースは次のように作成されます。
NSFileManager *filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath: databasePath ] == NO)
{
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &basicDB) == SQLITE_OK)
{
char *errMsg;
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS DATA (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, BUDGET INTEGER)";
if (sqlite3_exec(basicDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
{
DLog(@"Failed to create table");
}
sqlite3_close(basicDB);
} else {
DLog(@"Failed to open/create database");
}
}