ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

javascript-PhoneGap-读取预打包的sqlite数据库

2019-11-20 21:35:13  阅读:208  来源: 互联网

标签:sqlite cordova cordova-plugins fileapi javascript


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

但是,我希望插件读取预先打包的数据库.简而言之,创建一个可以脱机工作并且在首次运行时无需下载SQLite数据库的应用程序.

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

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

最后,问题!为了能够读取与应用程序打包在一起的文件,我必须采取什么确切步骤?

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

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

仅使用WebSQL数据库并使用大量INSERT加载数据库数据是不可行的选择,该数据库具有数千条记录.

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

解决方法:

当前,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上也添加位置:2,这会将数据库放在Library / LocalDatabase中.

更新(2016)

原始的Cordova-sqlite-storage项目不再支持预填充的db.

但是,此功能刚刚从同一创建者移至另一个项目.现在,为此使用Cordova-sqlite-ext.

标签:sqlite,cordova,cordova-plugins,fileapi,javascript
来源: https://codeday.me/bug/20191120/2046921.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有