PhoneGap - 读取预打包的 sqlite 数据库
PhoneGap - Read pre-packaged sqlite database
我一直在努力让它工作太久了。我刚刚开始进入PhoneGap/Cordova。我运行了演示应用程序,安装了所有官方插件,并添加了这个SQLite插件以开始使用:https://github.com/brodysoft/Cordova-SQLitePlugin
但是,我希望插件读取预打包的数据库。简而言之,创建一个脱机工作的应用程序,并且在首次运行时不需要下载 SQLite 数据库。
我已经为 Android 开发了一段时间,解决方案是在 assets 文件夹中部署一个只读数据库文件,并在第一次运行时将数据库文件复制到另一个文件夹中,在那里我可以随心所欲地读/写。
所以我做了一些研究,意识到它应该与PhoneGap相同。将二进制 SQLite 数据库放在某个位置,以便在构建时,它将与应用程序一起打包。然后简单地使用我在这里链接的 SQLite 插件加载它。
最后,问题!我必须采取哪些确切步骤才能读取与应用程序一起打包的文件?
- 我应该将二进制文件放在哪里以确保将其打包到应用程序中?
- 我应该如何初始化文件 API?我应该要求使用
window.requestFileSystem
进行持久存储吗?或者我应该使用window.resolveLocalFileSystemURL
获取一些(不确定哪个)目录(cordova.file.applicationDirectory
)作为DirectoryEntry
?如果是这样,我应该使用哪些确切参数?我主要指的是这个:https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md - 如何读取打包的文件?将
window.resolveLocalFileSystemURL
与正确的文件夹一起使用?那么参数应该是什么? - 如果我到了这一点,文件复制应该可以正常工作。只需从只读
cordova.file.applicationDirectory
复制到cordova.file.dataDirectory
,即可读/写。右?
我知道这些问题可能非常基本,但我的无数次尝试都没有成功,我没有找到一个教程来深入解释这一点(相信我,我用谷歌搜索过)。此外,文档似乎不足。
仅使用 WebSQL 数据库并使用 INSERT
s 的 s*** 负载加载数据数据库不是一个可行的选择,数据库有数千条记录。
提前感谢您的帮助,您将省去一两个头痛。
目前,Cordova的标准SQLite插件支持预填充数据库,它将从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 项目不再支持预填充的 db。
但是,此功能刚刚从同一创建者转移到另一个项目。现在,使用 Cordova-sqlite-ext 来实现此目的。
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 是否可以使用NativeScript使用Sqlite数据库
- 使用Javascript将多条记录插入SQLite数据库时出错
- 连接SQlite数据库
- 以html形式显示sqlite数据库中的数据(phonegap)
- 如何访问Chrome创建的SQLITE数据库
- 使用 SQL .js在 JavaScript 中加载 SQLite 数据库
- Phonegap应用程序SQLite数据库初始设置
- 将捕获的图像存储到SQlite数据库中?(科尔多瓦)
- 将SQLite数据库存储在IndexedDB中
- 有没有一种简单的方法可以通过javascript将MySQL文件导入SQLite数据库
- 我想将长文本文档解析为SQLite数据库.如何转义所有不支持的字符
- Windows 8应用程序Javascript和SQlite(数据库已锁定)
- 从sqlite数据库查询数据结果文件名
- 如何在PhoneGap应用程序中使用SQLite数据库
- 从sqlite数据库获取结果
- 为什么我可以添加一个新主题,但我可以't向SQLite数据库添加新注释
- 用PHP读取SQLite数据库?(使用sencha touch sqlite制作)
- 使用 sql.js 从磁盘读取 SQLite 数据库
- PhoneGap - 读取预打包的 sqlite 数据库