ionic sqlite表的一些操作

var db = null;


$ionicPlatform.ready(function() {

  db = $cordovaSQLite.openDB({//创建数据库
    name: "wpf.db",
    location: 1
  });

  wpf.setCordovaSQLite($cordovaSQLite);
  wpf.getSQLiteClass(db).createTable(['wpf']);//创建表

});



var wpf = function {

var setCordovaSQLite = function (obj) {
  $cordovaSQLite = obj;
}


var getSQLiteClass = function (db) {
  var patterns = {

    wpf : {
      'userId': 'text PRIMARY KEY',
      'username':'text',
      'password': 'text'
    }

   
  }

  return {
    createTable: function (tables) {
      for (var i in tables) {
        var table = tables[i];
        var query = "CREATE TABLE IF NOT EXISTS `#table#` (#cols#)".replace('#table#', table);
        var pattern = patterns[table];
        var cols = [];
        for (var key in pattern) {
          cols.push(key + " " + pattern[key]);
        }
        query = query.replace('#cols#', cols.join(','));
        console.log(query);
        $cordovaSQLite.execute(db, query);
      }
    },
    saveRecords: function (table, records, callback) {
      var query = "REPLACE INTO `#table#` (#cols#) VALUES #rows#".replace('#table#', table);
      var pattern = patterns[table];
      var cols = [],
        rows = [],
        _rows = '';
      var dbInterval = null;
      for (key in pattern) {
        cols.push(key);
      }
      if (records instanceof Array) {
        for (var i in records) {
          var row = [];
          for (key in pattern) {
            var val = (records[i][key] || pattern[key]);
            //val= val.replace(/'/g,"\\'");
            row.push(val === null ? "null" : "'" + val + "'");
          }
          rows.push("(#row#)".replace("#row#", row.join(',')));
        }
        _rows = rows.join(',');
      } else {
        for (var k in cols) {
          rows.push((records[cols[k]] === null || records[cols[k]] == undefined) ? "null" : "'" + records[cols[k]].toString().replace(/'/g, "’") + "'");
        }
        _rows = "(" + rows.join(',') + ")";
      }
      query = query.replace('#cols#', cols.join(',')).replace('#rows#', _rows);
      console.log(query);
      if (!window.db) {
        dbInterval = $interval(function () {
          if (window.db) {
            doSaveCord();
          }
        }, 200, 15);
      } else {
        doSaveCord();
      }

      function doSaveCord() {
        $cordovaSQLite.execute(window.db, query).then(function (res) {
          callback && callback(res);
        }, function (err) {
          console.error(err);
        });
        if (dbInterval) {
          $interval.cancel(dbInterval);
        }
      }
    },
    selectRecords: function (table, where, callback) {
      var query = "SELECT * FROM `#table#` #where#".replace('#table#', table).replace('#where#', where || '');
      var dbInterval = null;
      console.log(query);
      if (!window.db) {
        dbInterval = $interval(function () {
          if (window.db) {
            doSelectCord();
          }
        }, 200, 15);
      } else {
        doSelectCord();
      }

      function doSelectCord() {
        $cordovaSQLite.execute(window.db, query).then(function (res) {
          callback && callback(res);
        }, function (err) {
          console.error(table + "  " + JSON.stringify(err));
        });
        if (dbInterval) {
          $interval.cancel(dbInterval);
        }
      }
    },
    deleteRecords: function (table, where, callback) {
      var dbInterval = null;
      var query = "DELETE FROM `#table#` #where#".replace('#table#', table).replace('#where#', where || '');
      console.log(query);
      if (!window.db) {
        dbInterval = $interval(function () {
          if (window.db) {
            doDeleteCord();
          }
        }, 200, 15);
      } else {
        doDeleteCord();
      }

      function doDeleteCord() {
        $cordovaSQLite.execute(window.db, query).then(function (res) {
          callback && callback(res);
        }, function (err) {
          console.error(err);
        });
        if (dbInterval) {
          $interval.cancel(dbInterval);
        }
      }
    }
  }
}

}

//使用

var params = {
  userId: $scope.loginData.username,
  username: $scope.loginData.username,
  password: $scope.loginData.password
};
wpf.getSQLiteClass(db).saveRecords('wpf', params, function () {
  console.log("wpf table saves success");
  zzExercitation.getSQLiteClass(db).selectRecords('wpf', null, function (res) {
    console.log("===============wpf start===================");
    console.log(res);
    console.log("===============wpf end===================");
  });
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值