2

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

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

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

4

2 回答 2

2

首先创建数据库,因为您使用名称 data_items.sqlite 并删除 .sqlite 扩展名。然后将这个 db 拖到 xCode 中的 Resources 目录并按照 next 。

选择添加文件框的选项将出现选中复选框,显示“将项目复制到目标组的文件夹(如果需要)”并完成。

您将看到数据库文件作为资源目录的子列表

抱歉,我没有足够的声望在这里发布图片

现在点击链接将此数据库文件复制到位置

在iOS中启动应用程序时如何复制sqlite数据库?

我在 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);
    ...
}

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

iPhone 模拟器在哪里存储它的数据?

于 2013-12-02T12:37:56.200 回答
0

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

于 2012-11-30T09:46:19.640 回答