这里我实现了一个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对象
我的应用程序没有抛出错误或异常。
有什么问题,我怎样才能发现问题并解决问题?
感谢。
答案 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()的调用。