Cordova Android:从任意目录打开 SQLite .db 数据库

Posted

技术标签:

【中文标题】Cordova Android:从任意目录打开 SQLite .db 数据库【英文标题】:Cordova Android: Open a SQLite .db database from an arbitrary directory 【发布时间】:2017-12-14 18:31:27 【问题描述】:

我有一个 Cordova 移动应用程序,我让用户从外部 .db 文件导入 SQLite 数据库。我正在使用cordova-sqlite-storage

https://github.com/litehelpers/Cordova-sqlite-storage

已经实施了一个简单的解决方案,但存在风险。基本上,用户使用替换旧 .db 文件的文件选择器选择外部 .db 文件

window.plugins.sqlDB.copyDbFromStorage("mydb.db", 0, file, true, onSuccess);

file 是新 .db 文件的 uri。

它有效,但我想先检查 .db 文件,至少要检查这两项:

检查 .db 文件是否真的是 SQLite 数据库 检查新的 SQLite 数据库是否有一些必须存在的表 导入前

我的尝试

我试图找到一种从原始目录打开 .db 文件的方法,但似乎 openDatabase() 仅打开存储在特殊 default 位置的数据库(我猜这是内部私有存储应用程序)

openDatabase(name: 'test.db', location: 'default');

不鼓励使用location 参数的其他值,他们建议坚持使用default

【问题讨论】:

尝试打开它;尝试阅读表格。 @CL 我试过了,但如果你仔细观察,你只能像这样调用打开的数据库: openDatabase(name: 'test.db', location: 'default');它不允许您指定路径 【参考方案1】:

如果您不能(或不想)在原始位置打开数据库,则必须将其复制到具有不同文件名的内部私有存储位置。 (您可以稍后复制旧文件,或删除并重命名文件。)

【讨论】:

感谢您的回复..这就是我实际上正在做的......但我认为在原始位置打开 .db 文件会更简单。从 Cordova-sqlite-storage 的文档来看,似乎没有办法。我在这里缺少什么? 文档中提到它“支持 android 上的任意数据库位置”。 我知道.. 但它没有显示任何示例或任何其他线索。 openDatabase 函数接受一个名称(字符串)和一个位置,除了“默认”之外,我不知道它应该存储什么。文档怎么会如此混乱和不精确?您能告诉我如何指定自定义路径吗? 使用源代码,卢克! dblocations = ["docs", "libs", "nosync"]; 没有。

以上是关于Cordova Android:从任意目录打开 SQLite .db 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Cordova [Android 平台] 从 API 29 迁移到 API 30

从 Cordova 和 iOS 打开 MS Office 文件

一些插件

从 Xcode 项目中导出 .ipa 文件,而无需打开 Xcode

cordova-plugin-local-notifications发送Android本地消息

从 Cordova 项目构建的英特尔 XDK