检查SQLite数据库是否已创建

时间:2016-10-26 06:27:29

标签: sqlite cordova

我正在使用Ionic / Cordova SQLite插件,我希望能够在调用特定函数之前检查数据库是否存在。如果我使用openDatabase("db", "", "name", dbSize, function() { };,只有在没有数据库的情况下才会调用它,但是如果我关闭Android应用并重新启动,openDatabase()内的代码根本就不会被调用..如果它被调用了db已经创建了吗?还有另一种检查数据库已经创建的方法吗?

基本上,我需要在检查有数据库后调用一个函数。

db = openDatabase("dbn", "", "manager", dbSize, function() {

            console.log('is called'); // only shows when first creating db

            // USER table create
            db.transaction(function (tx) {
                //tx.executeSql('DROP TABLE grips.db.user');
                tx.executeSql('CREATE TABLE IF NOT EXISTS  user (id integer primary key,active_user, firstname, lastname, email, age, gym_id integer, set_time integer, date_created integer )');

                tx.executeSql('CREATE TABLE IF NOT EXISTS  sets (id integer primary key,machine_name, device_id integer, weight_val integer, user integer,reps, exercise_id integer, workout_id, gym_id integer, calories,time_ago text, date_created integer)');

                tx.executeSql('CREATE TABLE IF NOT EXISTS  devices (id integer primary key,mac_id text, device_type,gym_id integer,machine_id integer,machine_name,date_created integer)');

                tx.executeSql('CREATE TABLE IF NOT EXISTS  workouts (id integer primary key,user integer,date_created integer)');

                tx.executeSql('CREATE TABLE IF NOT EXISTS  pt_workouts (id integer primary key, img_url, name, video_url, admin_user integer, gym_id integer, gif_url, search_img, instructions, trainer_name, user_img, date_created integer)');



            }, function (error) {

            }, function () {

            });

        }, function (error) {

            console.log('open db second error');

        },function () {

            console.log('open db second');

        });  

1 个答案:

答案 0 :(得分:1)

openDatabase将打开现有数据库或创建新数据库(如果它不存在)。

所以,如果你这样做:

Caused by: java.lang.UnsatisfiedLinkError: no jnind4j in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:727)
    at org.bytedeco.javacpp.Loader.load(Loader.java:502)
    at org.nd4j.nativeblas.NativeOps.<clinit>(NativeOps.java:37)
    ... 18 more

如果数据库不存在,它将创建数据库,或打开现有数据库。然后你可以像这样在事务中进行表交互:

    var db = null;
    db = window.sqlitePlugin.openDatabase({ name: "my.db", location: 'default'});

或者您可以使用db对象并检查您需要检查的其他内容。我还建议这一切都是在onDeviceReady()方法中完成的(你可能已经这样做了)