0

私はiPhoneの開発に慣れていません。SQLクエリ「select pubdate from test where rowid in(select max(rowid) from test)」があります。このクエリを実行すると、適切な結果が得られませんでした。ソースコード:

NSString *query=[NSString stringWithFormat:@"select pubdate from %@ where rowid in(select max(rowid) from %@)",tableName,tableName];
const char *  sql = [query UTF8String];
sqlite3_stmt *lastInsVal_statement = nil;
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString * docsDir = [paths objectAtIndex:0];
NSString * thePath = [docsDir stringByAppendingPathComponent:
                      @"Training_Project2.sqlite"];
sqlite3_open([thePath UTF8String], &database);
sqlite3_prepare_v2(database, sql, -1, &lastInsVal_statement, NULL);
NSString* pubdate;
while(sqlite3_step(lastInsVal_statement)==SQLITE_ROW){
    const char* str = (const char*)sqlite3_column_text(lastInsVal_statement, 2);
    pubdate = [NSString stringWithCString:str encoding:NSUTF8StringEncoding];
}
sqlite3_finalize(lastInsVal_statement);
sqlite3_close(database);
return pubdate;
4

1 に答える 1

0

この行:

const char* str = (const char*)sqlite3_column_text(lastInsVal_statement, 2);

次の行に変更する必要があります。

const char *str = (const char *)sqlite3_column_text(lastInsVal_statement, 0);

0クエリで選択した最初の列を取得することを意味します。

于 2013-02-06T09:06:34.943 に答える