我在这里实现一个选择查询从表中获取数据,但没有任何行是由我的查询返回。
下面是我使用的代码: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[468:207]数据库打开…2011-04-06 17:44:33.382 Tuscany[468:207]查询无法准备
注意:这里dataFilePath是返回数据库路径的方法,数据库是sqlite3 object
我的应用程序没有抛出错误或异常。
会有什么问题,我如何发现问题并解决问题?
谢谢。
没有抛出错误或异常
嗯,是的,有。调用sqlite3_prepare_v2()失败;它不返回SQLITE_OK。
当您在数据库的sqlite提示符下运行此语句时会发生什么?
SELECT * from ts_Gallary;
尝试替换这一行
NSLog(@"query could not be prepared");
用一些能给你更多错误信息的东西。包含对sqlite3_errmsg()的调用
从const char *slectImageIdQuery="SELECT * from ts_gallery;"中删除分号(;)
like const char *slectImageIdQuery="SELECT * from ts_gallery "