选择查询未准备好

时间:2011-04-06 12:22:31

标签: iphone objective-c sqlite

这里我实现了一个select查询来从表中获取数据,但我的查询没有返回任何行。

下面是我正在使用的代码:

if ((sqlite3_open([[self dataFilePath] UTF8String], &database))==SQLITE_OK)
{
    NSLog(@"DataBase OpeneD..!!");
    imageId=[[NSMutableArray alloc] init];
    const char *slectImageIdQuery="SELECT * from ts_Gallary;";
    sqlite3_stmt *statement;
    if (sqlite3_prepare_v2(database, slectImageIdQuery, -1, &statement, nil)==SQLITE_OK)
    {
        NSLog(@"Query CREATED..!!");
        while (sqlite3_step(statement)==SQLITE_ROW)
        {
            int iId=sqlite3_column_int(statement, 0);
            NSString *imgTtl=[NSString stringWithFormat:@"%d",iId];
            NSLog(@"image id in while=%d",iId);
            [imageId addObject:[NSString stringWithFormat:@"%@",imgTtl]];           
        }
    }
    else 
    {
        NSLog(@"query could not be prepared");
    }

    sqlite3_finalize(statement);        
}
sqlite3_close(database);

我的控制台显示:

2011-04-06 17:44:33.381 Tuscany [4680:207] DataBase OpeneD .. !! 2011-04-06 17:44:33.382托斯卡纳[4680:207]无法准备查询

注意:这里 dataFilePath 是返回数据库路径的方法,数据库是sqlite3对象

我的应用程序没有抛出错误或异常。

有什么问题,我怎样才能发现问题并解决问题?

感谢。

2 个答案:

答案 0 :(得分:0)

const char * slectImageIdQuery =“SELECT * from ts_Gallary”中删除分号(;);“

喜欢 const char * slectImageIdQuery =“SELECT * from ts_Gallary”

及其正常工作。

答案 1 :(得分:0)

  

没有抛出错误或异常   通过我的申请。

嗯,是的,有。您对sqlite3_prepare_v2()的调用失败;它不会返回SQLITE_OK。

在数据库的sqlite提示符下运行此语句会发生什么?

SELECT * from ts_Gallary;

尝试替换此行

NSLog(@"query could not be prepared");

提供有关错误的更多信息。包括对sqlite3_errmsg()的调用。