我正在尝试从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)时,它不会进入循环。 不确定我正在做的错误。
谢谢!
答案 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。