2016-10-26 14 views
0

Ionic/Cordova SQLiteプラグインを使用しています。特定の関数を呼び出す前にデータベースが存在するかどうかを確認できます。私がopenDatabase("db", "", "name", dbSize, function() { };を使用している場合は、データベースがない場合にのみ呼び出されますが、openDatabase()のコードはAndroidアプリケーションを終了して再起動すると呼び出されません。dbがすでに作成されている場合はこれを呼び出す必要がありますか? dbが既に作成されていることを確認する別の方法はありますか?SQLiteデータベースが既に作成されていることを確認してください

基本的には、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

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"); 
    }); 

それとも、dbオブジェクトを使用すると、あなたがチェックする必要がある任意の他確認することができます。また、これはすべてonDeviceReady()メソッドで行うことをお勧めします(既にこれを行うかもしれません)

関連する問題