【发布时间】:2015-05-14 04:01:57
【问题描述】:
我的头撞墙有一段时间了,希望蜂巢思维能帮助我。
我正在尝试从远程位置下载并附加一个 sqlite 数据库('database.db'),虽然我可以很好地下载它,但我正在努力使用 window.sqlitePlugin.openDatabase({ name : databaseName });
有任何想法或有人能够在 phonegapbuild 中下载并附加一个 sqlite 数据库吗?
var _urlContactsSqlite = 'https://www.dropbox.com/s/370lyi2w21pxgrs/database.db?dl=1';
function init() {
var databaseName = 'database.db';
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function requestFileSystemSuccess(fs) { //fs = filesystem
console.log('requestFileSystemSuccess');
fs.root.getDirectory('databases', { create: true }, //create the directory if it doesnt exist
function getDirectorySuccess(dataEntry) {
console.log('getDirectorySuccess');
fs.root.getFile('dummy.html', {create: true, exclusive: false},
function getFileSuccess(fileEntry) {
console.log('getFileSuccess');
var sPath = fileEntry.nativeURL.replace('dummy.html','') + 'databases/';
console.log('sPath: ' + sPath);
var ft = new FileTransfer();
ft.download(
encodeURI(_urlContactsSqlite),
sPath + databaseName,
function downloadSuccess(entry) {
console.log('downloadSuccess - what now smarty pants');
console.log('now we have the database in a location, we should try and open it.');
$rootScope._db = window.sqlitePlugin.openDatabase({
name : databaseName
});
console.log('attempting to get a count of the contacts table');
var promise = dbQuery.contacts_Count();
promise
.then(function(data) {
console.log(data);
alert(data);
})
.catch(function(error) {
console.log('error occurred inside promise : ' + error );
});
},
function downloadFail(e) {
console.log('downloadFail', e);
console.log('error source ' + e.source);
console.log('error target ' + e.target);
console.log('error code ' + e.code);
},
false, null); //end fileTransfer
},
function getFileFail(e) {
console.log('getFileFail',e);
}
);
},
function getDirectoryFail(e)
{
console.log('getDirectoryFail',e);
}
); //end requestFileSystem
},
function requestFileSystemFail(){
console.log('requestFileSystemFail');
}
); //end requestFileSystem
} // end init()
dbQuery.contacts_Count();
function contacts_Count() {
var deferred = $q.defer();
setTimeout(function() {
$rootScope._db.transaction(function(tx) {
var sql = 'SELECT COUNT(*) AS COUNT FROM contacts;';
console.log(sql);
tx.executeSql(sql, [], function(tx, results) {
var rowCount = results.rows.item(0).COUNT;
console.log('rowcount: ' + rowCount);
deferred.resolve(rowCount);
}, null);
});
},1);
return deferred.promise;
}
【问题讨论】:
标签: javascript android iphone sqlite phonegap-build