Sqlite:检查数据库是否存在

Mou*_*wi7 5 javascript sqlite cordova

我正在开发一个使用phonegap的移动应用程序,它将一些数据存储到本地数据库(sqlite DB).我需要知道数据库是否存在,以及确定需要执行哪个进程.

var database = window.openDatabase("my_db", "1.0", "sample DB", 30000);
if (check_db_exist()) {
    process_1();
}
else
{
    process_2();
}
Run Code Online (Sandbox Code Playgroud)

tyl*_*ell 2

我需要做类似的事情,我需要检查应用程序是否已经创建了数据库(旧数据库),如果是,则将所有数据导出到新数据库(新的和改进的数据库),然后删除该数据库。

背景信息:我正在从简单的键值表转向具有级联等的复杂关系数据库。

function onDeviceReady() {
    // CHECK IF LEGACY DATABASE EXISTS. IF DOES EXPORT EXISTING DATA TO NEW DB THEN DELETE LEGACY
    window.resolveLocalFileSystemURL(cordova.file.applicationStorageDirectory + "/databases/<DatabaseName>.db", exportToNewDB, setupDB);
}
Run Code Online (Sandbox Code Playgroud)

注意:如果文件存在(成功),那么我们需要在这里执行导出代码,然后删除文件,因此此方法将始终失败。如果文件不存在 - 用户已导出到新数据库,或者他们是我们的新用户并且从未拥有旧数据库。

// Fail Method
function setupDB() {
    newDB = window.sqlitePlugin.openDatabase({ name: "<NewImprovedDBName>.db" });
    newDB.transaction(sql.initDB, sql.errorCallback, sql.successCallBack);
}
// Success Method
function exportToNewDB() {
    db = window.sqlitePlugin.openDatabase({ name: "<LegacyDBName>.db" });
    db.transaction(function (tx) {
         setupDB();
         // Insert Export code Here

         // Delete DB
         window.sqlitePlugin.deleteDatabase("<LegacyDBName>.db", sqlSuccess, sqlFail);
    }, sqlFail);
}
Run Code Online (Sandbox Code Playgroud)

回答你的问题:

window.resolveLocalFileSystemURL(cordova.file.applicationStorageDirectory + "/databases/my_db.db", process_1, process_2);
Run Code Online (Sandbox Code Playgroud)