我已使用file:///data/data/my.package.name/databases/data.db
将我的.db文件从file:///storage/sdcard0/data.db
成功备份到fileEntry.copyTo()
,但是将恢复数据库文件发送回应用程序时出现问题。
如果我将备份文件复制到file:///android_asset/www/
,我收到FileError错误代码1000,如果我直接将文件复制到file:///data/data/my.package.name/databases/
,则不会发生错误,但我的应用程序仍在读取空数据库恢复完成。
我的恢复数据库代码:
function performDBRestore() {
window.requestFileSystem(
LocalFileSystem.PERSISTENT, 0,
function(fileSystem) {
window.resolveLocalFileSystemURL(
"file:///storage/sdcard0/data.db",
function(fileEntry) {
window.resolveLocalFileSystemURI(
"file:///data/data/my.package.name/databases/",
function(directoryEntry) {
fileEntry.copyTo(directoryEntry, "data.db",
function (fileEntry) {
console.log("Restore success!");
},
function (error) { //no error, but db still empty while open
console.log("Restore fail!");
}
);
},
function(error) {
// if I copy backup file to "file:///android_asset/www/",
// I got errCode 1000 here
}
);
},
function (error) {
//some error handling....
}
);
},
function(error) {
//some error handling....
}
);
}
我的开放式数据库代码:
var db = window.sqlitePlugin.openDatabase({name: "data.db"});
顺便说一下,如果我将备份文件复制到file:///android_asset/www/
,我是否可以按照以下方式打开数据库?
var db = window.sqlitePlugin.openDatabase({name: "data.db", createFromLocation: 1});
有什么想法吗?非常感谢。
答案 0 :(得分:0)
我发现实际上我的代码恢复了data.db文件,但是在我退出应用程序并重新启动它之前,我无法获取已恢复的数据库数据。我不知道为什么,但无论如何,data.db确实恢复了。