将现有的SQLite数据库导入iOS Phonegap应用程序

时间:2012-11-29 15:37:32

标签: sqlite cordova

我有一个名为data_items.sqlite的现有SQLite数据库。这个数据库包含大约10个表和一些初始数据,我想通过这种方式导入XCode以使用Phonegap插件打开数据库:

function onDeviceReady() {
    var db = window.sqlitePlugin.openDatabase("data_items.sqlite", "1.0", "PhoneGap Demo", 200000);
    ...
}

如何导入数据文件?我在哪里复制文件?

2 个答案:

答案 0 :(得分:2)

首先使用名称data_items.sqlite创建数据库并删除.sqlite扩展名。然后在xCo​​de的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);
    ...
}

您也可以直接从复制的位置编辑数据库。使用以下链接

Where does the iPhone Simulator store its data?

答案 1 :(得分:0)

似乎无法从PhoneGap访问资产文件夹,因此您必须编写本机插件来复制数据库文件:
Prepopulate SQLite DataBase in PhoneGap Application