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