我有一个名为data_items.sqlite的现有SQLite数据库。这个数据库包含大约10个表和一些初始数据,我想通过这种方式导入XCode以使用Phonegap插件打开数据库:
function onDeviceReady() {
var db = window.sqlitePlugin.openDatabase("data_items.sqlite", "1.0", "PhoneGap Demo", 200000);
...
}
如何导入数据文件?我在哪里复制文件?
答案 0 :(得分:2)
首先使用名称data_items.sqlite创建数据库并删除.sqlite扩展名。然后在xCode的Resources目录中拖动这个db,然后按下一步。
将出现选择添加文件框的选项 选中复选框“将项目复制到目标组的文件夹(如果需要)”并完成。
您将看到数据库文件为资源目录的子列表
抱歉,我没有足够的声誉在这里发布图片
现在点击链接将此数据库文件复制到位置
How to copy sqlite database when application is launched in iOS?
我在AppDelegate.m
的最后一行@end之前使用了以下代码 - (void) copyDatabaseIfNeeded{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
_dbPath = [self getDBPath];
BOOL success = [fileManager fileExistsAtPath:_dbPath];
if(!success){
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"data_items"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:_dbPath error:&error];
if (!success)
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}}
/********* Database Path *********/
- (NSString *) getDBPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"data_items"];
}
复制该行
[self copyDatabaseIfNeeded];
之后的代码
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
就是这样。使用您的代码
function onDeviceReady() {
var db = window.sqlitePlugin.openDatabase("data_items", "1.0", "data_items", 200000);
...
}
您也可以直接从复制的位置编辑数据库。使用以下链接
答案 1 :(得分:0)
似乎无法从PhoneGap访问资产文件夹,因此您必须编写本机插件来复制数据库文件:
Prepopulate SQLite DataBase in PhoneGap Application