ionic---数据本地存储sqlite

插件安装

ionic plugin add cordova-sqlite-storage

选择操作数据库的库PouchDB

  • 下载PouchDBjs库
    自行下载或者使用bower管理器下载
  • index引入PouchDBjs库
<script src="lib/pouchdb/dist/pouchdb.min.js"></script>
  • PouchDBjs中文api(百度翻译)
http://blog.csdn.net/qq_29287973/article/details/53334075

将操作数据库的方法封装成Service

.factory('appSQL', function() {
    var _db;
    _db = new PouchDB('appSQL', {adapter: 'websql'});
    return {
        initDB: function () {
            _db = new PouchDB('appSQL', {adapter: 'websql'});
        },
        getinfo: function (id,callback) {       //获取数据库信息
            _db.get(id).then(function (result) {
                callback(result);
            }).catch(function (err) {
                callback(err);
            });
        },
        updataInfo:function(id,data,callback){ //更新或者添加数据库信息
            _db.get(id).then(function(doc) {
                return _db.put({
                    _id: id,
                    _rev: doc._rev,
                    data: data
                }).then(function (response) {
                    callback(response);
                });
            }).catch(function (err) {
                if(err.status == '404'){
                    _db.put({
                        _id: id,
                        data: data
                    }).then(function (response) {
                        callback(response);
                    });
                }
            });
        },
        removeInfo: function (id) {             //删除数据库信息
            _db.get(id).then(function(doc) {
                return _db.remove(doc);
            })
        }
    }
})

appSQL服务的使用

  • 初始化(在app.js中初始化)
.run(function($ionicPlatform,appSQL,$cordovaNativeAudio) {
    console.log('leason');
    $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)

        appSQL.initDB();
        .
        .
        .
  • 控制器中调用(将appSQL服务注入)
//更新添加数据
$scope.login = function () {
    var opr = 'login',
        action = 'login.do ',
        psw = hex_md5(hex_md5(hex_md5($scope.loginCtrl.psw))),
        tel = $scope.loginCtrl.tel;
    var data = {
        user_name:tel,
        pwd:psw
    };
    var sqlData = {
        'user_name':tel
    };
    if(regularServe.tel.test(tel)){
        mainServe.showLoading();
        ajaxServe.pubAjax(opr,data,action,function(data){
            $cordovaToast.show(data.msg, 'long', 'top');
            $rootScope.loginState = true;
            appSQL.updataInfo(SSID,data.ssid);      //可以不写回调
            appSQL.updataInfo(PER_INFO,sqlData,function () {
                mainServe.hideLoding();
                $state.go('tab.index', {}, {
                    reload: true
                });
            });
        });
    }else{
        $cordovaToast.show('手机号格式错误!', 'long', 'top');
    }
}
//取已经有的数据数据(判断是否登录)
appSQL.getinfo(PER_INFO,function (data) {
    if(data.status == '404'){
        $cordovaToast.show('请先登录!', 'long', 'top');
        $location.path('/tab/index/login');
    }else {
        if (data.data.user_name == '' || data.data.user_name == undefined) {
            $cordovaToast.show('请先登录!', 'long', 'top');
            $location.path('/tab/index/login');
        } else {
            console.log('login');
            socket.init();
        }
    }
});

你可能感兴趣的:(Cordova,ionic)