【问题标题】:PhoneGap - Read pre-packaged sqlite databasePhoneGap - 读取预打包的 sqlite 数据库
【发布时间】:2015-03-19 08:40:09
【问题描述】:

我一直在努力让它工作太久。我刚开始接触PhoneGap/Cordova。我运行了演示应用程序,安装了所有官方插件,并添加了这个 SQLite 插件以开始使用:https://github.com/brodysoft/Cordova-SQLitePlugin

但是,我希望插件能够读取预打包的数据库。简单来说,就是创建一个离线工作的应用,第一次运行时不需要下载 SQLite 数据库。

我已经为 Android 开发了很长一段时间,解决方案是在 assets 文件夹中部署一个只读数据库文件,并在第一次运行时将数据库文件复制到另一个文件夹中,我可以在其中读/写随意。

所以我做了一些研究,并意识到它应该与 PhoneGap 相同。将二进制 SQLite 数据库放置在某个地方,以便在构建时将其与应用程序打包在一起。然后只需使用我在此处链接的 SQLite 插件加载它。

最后,问题!我必须采取哪些具体步骤才能读取与应用打包的文件?

  1. 我应该将我的二进制文件放在哪里以确保它被打包到应用程序中?
  2. 我应该如何初始化文件 API?我应该使用window.requestFileSystem 请求持久存储吗?或者我应该使用window.resolveLocalFileSystemURL 获得一些(不确定是哪个)目录(cordova.file.applicationDirectory)作为DirectoryEntry?如果是这样,我应该使用哪些 EXACT 参数?我主要指的是这个:https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md
  3. 如何读取打包文件?将window.resolveLocalFileSystemURL 与正确的文件夹一起使用?那么参数应该是什么?
  4. 如果我做到这一点,文件复制应该可以正常工作。只需从只读的cordova.file.applicationDirectory 复制到cordova.file.dataDirectory,即读/写。对吗?

我知道这些问题可能非常基本,但我无数次尝试都没有成功,而且我没有找到深入解释这个问题的教程(相信我,我在 Google 上搜索过)。此外,文档似乎不足。

仅使用 WebSQL 数据库并使用INSERTs 的 s***load 将数据加载到 DB 不是一个可行的选择,该数据库有数千条记录。

提前感谢您的帮助,您将省去我一两次头痛。

【问题讨论】:

    标签: javascript sqlite cordova cordova-plugins fileapi


    【解决方案1】:

    目前 Cordova 的标准 SQLite 插件支持Pre-populated Databases,它将从www 复制您的数据库文件并将其放入正确的目录中。它还支持Android和iOS,所以你不需要为不同的平台有不同的逻辑。

    当您打开数据库时,您可以指定它使用createFromLocation: 1 预填充,如下所示:

    var db = window.sqlitePlugin.openDatabase({
        name: "my.db",
        createFromLocation: 1
    });
    

    对于iOS,它会首先检查www,如果文件存在,它会将它复制到Documents。请记住,它将由 iCloud 备份。如果您想将其从 iCloud 中排除,请在 openDatabase 上添加 location: 2,这会将您的数据库放入 Library/LocalDatabase

    更新(2016 年)

    原来的 Cordova-sqlite-storage 项目不再支持预填充的数据库。

    但是,此功能只是从同一创建者转移到另一个项目。现在,为此使用Cordova-sqlite-ext

    【讨论】:

    • 截至 2017 年,Cordova-sqlite-storage 不支持预填充的数据库是否仍然如此?您还知道将文件放在 Ionic2 应用程序的哪个位置吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2010-11-04
    • 2016-04-12
    • 1970-01-01
    • 2011-05-15
    • 2013-03-18
    • 2020-01-31
    相关资源
    最近更新 更多