我想用我的应用分发一个填充的数据库。我正在尝试实现SQLitePlugin,但正如页面所说,没有任何关于如何在iOS上执行此操作的文档。我试图实施这个outdated步骤,但没有任何运气。有没有人这样做过?
答案 0 :(得分:1)
我找到了一个解决方案,至少它对我有用,所以这里是:
我使用并按照您提到的链接中的教程:http://gauravstomar.blogspot.fr/2011/08/prepopulate-sqlite-in-phonegap.html
一定要复制并通过好的database.db和000 ... 001.db(好的一个在/ Caches和/ Caches / file_0文件夹中,或者在/ WebKit和/ WebKit / file__0中,我要'记得所以如果它不起作用的话,试试另一个)。然后我将它们粘贴在我的资源项目目录中。
我修改了两行:
NSString *masterPath = [libraryDir stringByAppendingPathComponent:@"WebKit/Databases/"];
NSString *databasePath = [libraryDir stringByAppendingPathComponent:@"WebKit/Databases/file__0/"];
通过以下几行:
NSString *masterPath = [libraryDir stringByAppendingPathComponent:@"Caches/"];
NSString *databasePath = [libraryDir stringByAppendingPathComponent:@"Caches/file__0/"];
从模拟器/设备中删除您的应用程序。然后运行..它的工作原理,我的数据库是预先填充的。
答案 1 :(得分:1)
我将数据库放在Resources文件夹中,并将此代码放在MainViewController.m
。
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"this.db"];
if ([fileManager fileExistsAtPath:databasePath] == NO) {
NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"this" ofType:@"db"];
[fileManager copyItemAtPath:resourcePath toPath:databasePath error:&error];
}
答案 2 :(得分:0)
以下内容来自一篇博客文章 - 但是在我要引用它之前,我已经略微打了个帖子。我会在最后发布网址,我建议你去那里寻求完整的解释和一些后续评论。这个帮助来自Scott Buckel。
1)使用此插件:https://github.com/chbrody/Cordova-SQLitePlugin/
2)将sqlite db文件复制到PhoneGap的/ assets文件夹中。
3)然后,按照此处的说明操作:http://gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.html将文件复制到本机存储。更改this.copy(“Databases.db”,“/ data / data /”+ pName +“/ app_database /”);
3a)使用您的数据库文件名而不是Databases.db。 3b)使用“数据库”而不是app_database 3c)您可能希望从/ assets中删除该文件,因为它是重复的并且不再需要。我的应用程序的大小是它需要的两倍。
4)(不确定这一步是否有必要,我今天离开办公室)。编辑SQLitePlugin.java
4a)第176行,我编辑了1 == 1,以便始终执行if语句。第179行我改变了这个.setStorage(appPackage,false); to this.setStorage(appPackage,true);
5)然后,您可以使用以下命令打开数据库并将其用作任何其他PhoneGap数据库
5a)var db = window.sqlitePlugin.openDatabase(“[full_database_name_including_extension]”,“1.0”,“PhoneGap Demo”,200000);