无法使用SQLite在ionic1中创建多个表

时间:2017-08-04 15:48:45

标签: javascript android sqlite cordova ionic-framework

我使用Ionic& amp ;;构建移动应用程序我和Cordova需要将数据存储在本地数据库的几个表中,所以我使用SQLite。

在我的app.js中我有这个:



var db = null;

var weatherApp = angular.module('weather', ['ionic', 'ngCordova']);

weatherApp.run(function($ionicPlatform, $cordovaSQLite, Cities) {

  $ionicPlatform.ready(function() {
    if(window.cordova) {
      db = $cordovaSQLite.openDB({name: 'weather.db', location: 'default'});

      create table for storing favourites
      $cordovaSQLite.execute(db, 'CREATE TABLE IF NOT EXISTS favourites (id integer primary key, name text, openWeatherId integer)');
      create table for storing the current location of the device
      $cordovaSQLite.execute(db, 'CREATE TABLE IF NOT EXISTS location (id integer primary key, openWeatherId integer');

    //also tried
      // db.transaction(function (tx) {
      //   //create table for storing favourites
      //   tx.executeSql(db, 'CREATE TABLE IF NOT EXISTS favourites (id integer primary key, name text, openWeatherId integer)');
      // });

      // db.transaction(function (tx) {
      //   //create table for storing the current location of the device
      //   tx.executeSql(db, 'CREATE TABLE IF NOT EXISTS location (id integer primary key, openWeatherId integer');
      // });

      $cordovaSQLite.execute(db, 'SELECT tbl_name FROM sqlite_master WHERE type = "table"').then(function (res) {
        var tables = [];
        if (res.rows.length > 0) {
          for (var i = 0; i < res.rows.length; i++) {
            if (res.rows.item(i).tbl_name !== "android_metadata"){
              tables.push(res.rows.item(i).tbl_name);
            }
          }
          console.log(tables); 
          // gives:
          //   Array(1)
          //     0 : "favourites"
        } else {
          console.log('no tables in db!');
        }
      }, function (error) {
        console.log(error);
      });
    }
  });
});
&#13;
&#13;
&#13;

当我在物理Android设备上运行此(cordova运行android)时,只创建了1个表,收藏夹,其他位置不是。

任何想法为什么?谢谢!

1 个答案:

答案 0 :(得分:1)

第二个SQL查询中有一个拼写错误:

$cordovaSQLite.execute(db, 'CREATE TABLE IF NOT EXISTS location (id integer primary key, openWeatherId integer');

关闭括号修复了问题:

$cordovaSQLite.execute(db, 'CREATE TABLE IF NOT EXISTS location (id integer primary key, openWeatherId integer)');