ios sqlite3,未应用查询的条件

时间:2012-12-17 01:53:51

标签: ios sqlite

    sqlite3_stmt *statement;
    NSString *query = [NSString stringWithFormat:@"SELECT * FROM voiceMemoTable WHERE folder_number = %d ORDER BY file_date, file_time DESC", [currentFolderNumber integerValue]];

    NSLog(@"query : %s", [query UTF8String]);

    if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, NULL) == SQLITE_OK)
    {
        while(sqlite3_step(statement) == SQLITE_ROW)
        {
            NSString *fileName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)];
            NSString *filePath = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];

            VoiceMemo *currentVoiceMemo = [[VoiceMemo alloc]initWithName:fileName Path:filePath];
            [currentFolder addObject:currentVoiceMemo];
        }

        NSLog(@"### STATUS : success to get current folder %@ from database", currentFolderNumber);

        NSLog(@"current folder %@", currentFolder);
    }
    else
    {
        NSLog(@"@@@ ERROR : failed to prepare statement in getFolderFromDatabase.   ERROR CODE : %s", sqlite3_errmsg(database));
    }

这是代码。和,

2012-12-14 17:45:05.409 Rivo Recorder[9927:907] query : SELECT * FROM voiceMemoTable WHERE folder_number = 0 ORDER BY file_date, file_time DESC
2012-12-14 17:45:05.416 Rivo Recorder[9927:907] ### STATUS : success to get current folder 0 from database
2012-12-14 17:45:05.423 Rivo Recorder[9927:907] current folder (
)

这是日志。

我不知道为什么where查询不适用。数据库没错。它有正确的folder_number列数据有0值。

我的查询语法错了吗?

1 个答案:

答案 0 :(得分:0)

似乎没问题,但为什么不使用一些sqlite3框架来减少您的问题呢? https://github.com/ccgus/fmdb是一个不错的选择。

否则,您可以尝试在iOS模拟器上运行您的应用程序并直接访问数据库。

相关问题