在 Windows 10 中使用 cordova-plugin-file 复制 SQLite 数据库 cordova-sqlite-storage
Posted
技术标签:
【中文标题】在 Windows 10 中使用 cordova-plugin-file 复制 SQLite 数据库 cordova-sqlite-storage【英文标题】:Using cordova-plugin-file to copy SQLite database cordova-sqlite-storage in Windows 10 【发布时间】:2018-03-17 20:39:05 【问题描述】:我需要一些有关 cordova-plugin-file 的帮助来备份 Windows 10 应用程序中的 cordova-sqlite-storage 使用的数据库。 我的代码在 android 平台上运行良好。数据库可以双向复制(备份和恢复)。 该应用使用的数据库似乎如下:
C:\Users\myuser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db
App 尝试使用此位置定位文件,但未找到:
ms-appx:///databases/sample.db
我如何为 Windows 找到正确的位置来复制文件?
这是我用来复制文件的代码:
backupDatabase(name: string): Promise
return new Promise<boolean>((resolve, reject) =>
var fileName: string = window.cordova.file.applicationStorageDirectory + 'databases/' + name;
var directoryName: string = window.cordova.file.externalRootDirectory;
window.resolveLocalFileSystemURL(fileName, (file: FileEntry) =>
console.log('[!] Database exists: ' + fileName);
console.log('[!] Storage: ' + directoryName);
window.resolveLocalFileSystemURL(directoryName, (directory: DirectoryEntry) =>
console.log('[!] Directory: ' + directory.toURL());
directory.getDirectory("Backup", create: true, exclusive: false, (directoryBackup: DirectoryEntry) =>
console.log('[!] Directory: ' + directoryBackup.toURL());
file.copyTo(directoryBackup, name, (copiedFile: Entry) =>
console.log('[!] Copy success');
resolve(true);
, (error: FileError) =>
console.log('[!] Copy failed: ' + error.code);
reject(error);
);
, (error: FileError) =>
console.log('[!] Backup Directory not found: ' + directoryName + 'Backup' + ' errorcode: ' + + error.code);
reject(error);
)
, (error: FileError) =>
console.log('[!] Directory not found: ' + directoryName + ' errorcode: ' + + error.code);
reject(error);
);
, (error: FileError) =>
console.log('[!] Database not found: ' + fileName + ' errorcode: ' + + error.code);
reject(error);
);
);
【问题讨论】:
【参考方案1】:App 尝试使用此位置定位文件,但未找到:
ms-appx:///databases/sample.db
我如何为 Windows 找到正确的位置来复制文件?
您使用了错误的方案ms-appx:///
指的是package installed location。
对于C:\Users\myuser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db
你需要使用ms-appdata:///local/sample.db
。
【讨论】:
window.cordova.file.dataDirectory + 'sample.db';工作正常!谢谢 :-)以上是关于在 Windows 10 中使用 cordova-plugin-file 复制 SQLite 数据库 cordova-sqlite-storage的主要内容,如果未能解决你的问题,请参考以下文章
Cordova 构建 android 失败!!! JDK 8('1.8.*')的要求检查失败!检测到的版本:9.0.1 在 Windows 10 中
如何在 VS2017 Cordova (Windows 10) 中安装模拟器
具有通用 Windows 10 平台的 Cordova 应用程序无法发送分析日志
cordova build android in windows 10 显示以下问题