SQLite select语句返回空数组

时间:2011-11-26 07:35:27

标签: sqlite

我正在尝试从SQLite数据库(字符串的NSArray)获取数据并填充表视图单元格中的内容。我试图在命令提示符下执行查询,它工作正常。但在代码中,它返回一个空数组。

NSString *temp = [[NSString alloc]initWithFormat:@"select img.image from images img,illness i,illness_images ii where img.img_id=ii.img_id and i.i_id=ii.i_id and i.i_id = '%d'",illid];
        const char *sqlStatement = [temp UTF8String];
        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) 
        {
            // Loop through the results and add them to the array
            while(sqlite3_step(compiledStatement) == SQLITE_ROW) 
            {
                // Read the data from the result row
                NSString *imgname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];

                [imglist addObject:imgname];
                sqlite3_finalize(compiledStatement);

            }
        }
        else{
            NSAssert1(0,@"Error retrieving image names '%s'",sqlite3_errmsg(database));
        }

我尝试调试,当它到达while(sqlite3_step(compiledStatement)== SQLITE_ROW)时,它不会进入循环。 不确定我正在做的错误。

谢谢!

1 个答案:

答案 0 :(得分:1)

在将字符串查询分配给NSLog变量后尝试temp。 并检查变量illid是否为您提供了正确的值,并直接在数据库上运行该查询。

NSString *temp = [NSString stringWithFormat:@"select img.image from images img,illness i,illness_images ii where img.img_id=ii.img_id and i.i_id=ii.i_id and i.i_id = %d",illid];

您最好release alloc对象或使用类方法设置值进行内存管理。

HTH。