2016-10-26 93 views
0

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

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

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

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

所以,如果你喜欢这样的东西:

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

它会创建一个数据库,如果它不存在,或打开现有的。然后,你可以做表交互的交易像这样:

db.transaction(function (tx) { 
     tx.executeSql("CREATE TABLE IF NOT EXISTS x (field1 text primary key, field2 text)"); 
    }, function (err) { 
     alert("An error occurred while initializing the app"); 
    }); 

或者您可以使用该数据库对象并检查你所需要的任何其他检查。我还建议,这全部在onDeviceReady()方法中完成(您可能已经这样做)