我正在尝试从我的应用程序创建数据库的本地备份。为了完成此任务,我在javascript中创建了以下函数:
$rootScope.CriarBackupDoBanco = function () {
var fileTransfer = new FileTransfer();
var url = 'file://mnt/sdcard/';
var fileName = 'database_test.db';
var store = cordova.file.dataDirectory;
try {
DBA.query('.backup file://mnt/sdcard/DBtest.db').then(function (result) {
return DBA.getAll(result);
});
}
catch (e) {
console.log(e);
}
不确定是否有帮助,这是DBA工厂的查询功能:
// Handle query's and potential errors
self.query = function (query, parameters) {
parameters = parameters || [];
var q = $q.defer();
$ionicPlatform.ready(function () {
DB.executeSql(query, parameters, function (result) {
q.resolve(result);
}, function (error) {
console.warn('Error DBA:');
error.DBA_query = query;
error.DBA_parameters = parameters;
console.warn(error);
q.reject(error);
});
});
return q.promise;
}
但是,它返回语法错误,同时带有“ backup”和“ .backup”。将“ DBtest.db”更改为“ file://mnt/sdcard/DBtest.db”也没有效果。
我将这些站点用作参考:
How to backup sqlite database?
SQL script to "copy" a database
https://www.quackit.com/sqlite/tutorial/backup_a_database_to_file.cfm
使用window.resolveLocalFileSystemURL(path,OnSuccess(),OnError()),没有结果,无论成功还是失败,都好像跳过了一样。 (也许是Cordova上的错误?)。
我还确认了DBA.query()函数可以通过使用诸如select,insert,create,delete之类的命令来工作。
我的程序应在API版本19或更高版本的Android上运行。 我正在使用Ionic 1。 AngularJS和Cordova 9.0.0。
显示的错误是: “。附近有语法错误”(使用.backup时)或“备份附近有语法错误”(使用备份时)
答案 0 :(得分:0)
并不是我想要的,但是它可以工作。
使用SQLite Porter Cordova / Phonegap插件(https://www.npmjs.com/package/uk.co.workingedge.cordova.plugin.sqliteporter)
此插件允许将数据库导出/导入为JSON或SQL。因此,尽管它并未按我的意愿创建.db文件,但它仍然使我能够创建用作备份的文本。