在sqlite中选择查询(iPhone)

时间:2012-10-30 05:24:51

标签: iphone sqlite

从数据库中选择数据时遇到问题。 我使用以下查询在数据库中创建了“foldertable”

CREATE TABLE foldertable(fid integer primary key autoincrement,foldername text);

这是根据fid(folderid)获取foldername的代码

-(NSString *)getFolderFromDatabase:(int)folderId
{
        NSString * retriveFolderName;

        UIApplication * application=[UIApplication sharedApplication];
        ScrapMemoAppDelegate * appDelegate=application.delegate;
        NSString * destinationPath=[appDelegate getDestinationPath];
        sqlite3 * database;
        int retriveWhere=folderId;

        if(sqlite3_open([destinationPath UTF8String], &database)==SQLITE_OK)
        { 
            const char * query="select foldername from foldertable where fid = ?;";
            sqlite3_stmt * statement;
            if(sqlite3_prepare_v2(database, query, -1, &statement, NULL)==SQLITE_OK)
            {
                if (sqlite3_step(statement)==SQLITE_DONE)
                {
                    sqlite3_bind_int(statement, 1, retriveWhere);
                    retriveFolderName=[NSString stringWithCString:sqlite3_column_text(statement,0) encoding:NSASCIIStringEncoding];

                }
                else 
                {
                    NSLog(@"Error %s",sqlite3_errmsg(database));
                }

                sqlite3_reset(statement);
            }
            sqlite3_close(database);
        }
        return retriveFolderName;
}

但是当我在终端上发出相同的查询时,我得到了null foldername,它给出了正确的名称。请 为我提供解决方案。

1 个答案:

答案 0 :(得分:1)

从查看代码开始,主要问题是您尝试执行(步骤)查询,然后尝试绑定fid的值。你需要先做绑定。