我们有一个应用程序使用cordova(phonegap)和他自己的sqlite数据库(我的意思是我们没有安装外部sqlite)。在phonegap应用程序中导出sqlite数据库
我们需要将数据库备份到SD内存中,但我们在将sqlite文件从phonegap导出到SD时遇到问题。
有人可以帮助我们吗?
我们有一个应用程序使用cordova(phonegap)和他自己的sqlite数据库(我的意思是我们没有安装外部sqlite)。在phonegap应用程序中导出sqlite数据库
我们需要将数据库备份到SD内存中,但我们在将sqlite文件从phonegap导出到SD时遇到问题。
有人可以帮助我们吗?
很多很久以前...但我认为这是解决办法:
function failFiles(error) {
if (error.code == FileError.NOT_FOUND_ERR) alert("Message : NOT_FOUND_ERR")
else if (error.code == FileError.SECURITY_ERR) alert("Message : SECURITY_ERR")
else if (error.code == FileError.ABORT_ERR) alert("Message : ABORT_ERR")
else if (error.code == FileError.NOT_READABLE_ERR) alert("Message : NOT_READABLE_ERR")
else if (error.code == FileError.ENCODING_ERR) alert("Message : ENCODING_ERR")
else if (error.code == FileError.NO_MODIFICATION_ALLOWED_ERR) alert("Message : NO_MODIFICATION_ALLOWED_ERR")
else if (error.code == FileError.INVALID_STATE_ERR) alert("Message : INVALID_STATE_ERR")
else if (error.code == FileError.SYNTAX_ERR) alert("Message : SYNTAX_ERR")
else if (error.code == FileError.INVALID_MODIFICATION_ERR) alert("Message : INVALID_MODIFICATION_ERR")
else if (error.code == FileError.QUOTA_EXCEEDED_ERR) alert("Message : QUOTA_EXCEEDED_ERR")
else if (error.code == FileError.PATH_EXISTS_ERR) alert("Message : PATH_EXISTS_ERR")
}
function successDump() {
}
//Export DB. Get the file file:///data/data/yourproject/app_database/file__0/0000000000000001.db
//and save in the SD with the name yourproject.db
function copyBdtoSD() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, successDump, failFiles); window.resolveLocalFileSystemURI("file:///data/data/yourproject/app_database/file__0/0000000000000001.db", copyFileToSd, failFiles);
}
function copyFileToSd(entry) {
var parent = "file:///mnt/sdcard",
parentName = parent.substring(parent.lastIndexOf('/')+1),
parentEntry = new DirectoryEntry(parentName, parent);
var newName = "yourproject.db";
// copy the file
entry.copyTo(parentEntry, newName, successExport, failFiles);
}
先生,我们可以将数据库文件复制到SD卡,或者我们可以将它存储到服务器,如果我们丢失了我们的电话,那么用户会问从其他设备恢复数据库文件,然后我们将其恢复到相同的文件权利..但我想这个几天没有得到任何工作解决方案..你可以请看看这个 – user3107283 2016-03-18 12:04:19
这听起来不错,与科尔多瓦3.5和1.2.1 org.apache.cordova.file
需要一些变化不同的路径。
window.resolveLocalFileSystemURL("file:///data/data/my-app-name/databases/name-of.db", function(fs) {
var parent = "file://mnt/external_sd/";
var newName = "mybackup.db";
window.resolveLocalFileSystemURL(parent, function(directoryEntry) {
fs.copyTo(directoryEntry, newName, function() {
alert("Backup ok");
}, failFiles);
});
}, failFiles);
function failFiles(error) {
if (error.code == FileError.NOT_FOUND_ERR) alert("Message : NOT_FOUND_ERR")
else if (error.code == FileError.SECURITY_ERR) alert("Message : SECURITY_ERR")
else if (error.code == FileError.ABORT_ERR) alert("Message : ABORT_ERR")
else if (error.code == FileError.NOT_READABLE_ERR) alert("Message : NOT_READABLE_ERR")
else if (error.code == FileError.ENCODING_ERR) alert("Message : ENCODING_ERR")
else if (error.code == FileError.NO_MODIFICATION_ALLOWED_ERR) alert("Message : NO_MODIFICATION_ALLOWED_ERR")
else if (error.code == FileError.INVALID_STATE_ERR) alert("Message : INVALID_STATE_ERR")
else if (error.code == FileError.SYNTAX_ERR) alert("Message : SYNTAX_ERR")
else if (error.code == FileError.INVALID_MODIFICATION_ERR) alert("Message : INVALID_MODIFICATION_ERR")
else if (error.code == FileError.QUOTA_EXCEEDED_ERR) alert("Message : QUOTA_EXCEEDED_ERR")
else if (error.code == FileError.PATH_EXISTS_ERR) alert("Message : PATH_EXISTS_ERR")
}
先生,我们可以复制db文件到SD卡,或者我们可以将它存储到服务器,如果我们丢失了我们的电话,然后用户会问从其他设备恢复DB文件,然后我们恢复到同一个文件..但我想这两天没有得到任何工作解决方案..你可以请检查出这 – user3107283 2016-03-18 12:04:33
几年晚了,我知道,但是这是为我工作的科尔多瓦5.4.1和Android上运行的(我认为iOS的使用cordova.file.application太多,但我还没有测试):
this.getdbfilename = function() {
return "dbfile.db";
};
this.getdbdirectory = function() {
return cordova.file.applicationStorageDirectory + "databases/";
};
// copy DB file out to non-private app directory.
this.copyDBFileOut = function (outfilename) {
window.resolveLocalFileSystemURL(this.getdbdirectory() + this.getdbfilename(), function (fileEntry) {
window.resolveLocalFileSystemURL((cordova.file.externalDataDirectory || cordova.file.documentsDirectory), function(dirEntry) {
fileEntry.copyTo(dirEntry, outfilename, function() { console.log("copyDBFileOut() succeeded");}, this.errorHandler);
});
});
};
先生,我们可以复制db文件到SD卡,或者我们可以将它存储到服务器,如果我们失去了我们的电话,那么用户会问从其他设备恢复数据库文件,然后我们将其恢复到同一个文件的权利..但我想这几天没有得到任何工作解决方案..你可以检查出来这个?如果你知道,请帮助我 – user3107283 2016-03-18 12:03:57
你将不得不在你的问题中更具体。你有什么尝试? – NuSkooler 2013-01-28 16:42:29
我也在寻找相同的。你找到解决方案吗? – 2013-05-20 10:18:47