Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将现有SQLite数据库导入iOS Phonegap应用程序_Sqlite_Cordova - Fatal编程技术网

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

将现有SQLite数据库导入iOS Phonegap应用程序,sqlite,cordova,Sqlite,Cordova,我有一个名为data_items.SQLite的现有SQLite数据库。这个数据库包括大约10个表和一些初始数据,我想将它们导入XCode,以使用Phonegap插件以这种方式打开数据库: function onDeviceReady() { var db = window.sqlitePlugin.openDatabase("data_items.sqlite", "1.0", "PhoneGap Demo", 200000); ... } 如何导入数据文件?我必须在哪里复制

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

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

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

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

首先将数据库创建为u used name data\u items.sqlite并删除.sqlite扩展名。然后在xCode的Resources目录下拖动这个db,然后执行下一步

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

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

对不起,我没有足够的声誉在这里发布图片

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

我在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);
    ...
}
也可以从复制的位置直接在中编辑数据库。使用以下链接