这是我的代码,错误也可见:
在Mozzila Firefox的SQLite Manager中 - 所有查询都正常工作,这意味着数据库是正确的
也许有人可以告诉我我的代码有什么问题?
编辑:
我的代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"stories_db.sqlite"];
FMDatabase *db = [FMDatabase databaseWithPath:path];
//[db open];
if ([db open]==true)
{
FMResultSet *resultsFavorite = [db executeQuery:@"SELECT count(*) from favorites"];
while ([resultsFavorite next])
{
Pasaka *pasaka = [[Pasaka alloc]init];
pasaka.title = [resultsFavorite stringForColumn:@"story_name"];
pasaka.image = [resultsFavorite stringForColumn:@"image_path"];
pasaka.movie = [resultsFavorite stringForColumn:@"video_path"];
[favoriteMovieList addObject:pasaka];
}
}
编辑2:
当我执行此查询时:
FMResultSet *results = [db executeQuery:@"SELECT count(*) FROM sqlite_master"];
它没有显示任何错误。
答案 0 :(得分:0)
重置 iOS模拟器,或者如果您正在设备删除应用上进行测试,
清理项目并再次运行..
答案 1 :(得分:0)
只需转到dbpath中的文档即可。好像你的桌子不在那里。只需从设备或模拟器中删除您的应用程序,然后手动将数据库复制到dbpath或使用NSFileManager复制它并再次运行您的代码。
答案 2 :(得分:0)
您需要先将数据库复制到文档文件夹中(还要检查您的sqlite文件是否已在项目设置的Build Phase中的Copy Bundle Resources中正确添加):
//Where your original database file is
bundleDatabasePath = [[NSBundle mainBundle] pathForResource:@"stories_db" ofType:@"sqlite"];
//Where you will copy it in order to be used
documentDatabasePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingString:@"/stories_db.sqlite"];
//Using the default file manager
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
//Copy empty database into document folder
if (![fileManager copyItemAtPath:bundleDatabasePath toPath:databasePath error:&error]) {
//Error
NSLog(@"Could not copy the database into document folder. Error:%@", error);
}
//Use DB
FMDatabase *db = [FMDatabase databaseWithPath:databasePath];
答案 3 :(得分:0)
找到解决方案。将我的数据库文件移到项目之上...... O.o并且它有效...