2016-10-26 6 views
0

Я использую плагин Ionic/Cordova SQLite, и я хочу проверить, существует ли база данных до вызова определенной функции. Если я использую openDatabase("db", "", "name", dbSize, function() { };, он вызывается только тогда, когда нет базы данных, однако, если я закрою приложение Android и перезапустим, код внутри openDatabase() вообще не будет вызван .. если это будет вызвано, если 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 либо откроет существующий db, либо создаст новый, если он не существует.

Так что если вы делаете что-то вроде этого:

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() (возможно, вы уже это делаете)

Смежные вопросы