uniapp + sqlite

Uniapp 数据持久化

一、在uniapp中使用

uni.getStorage({ key: 'storage_key', success: function (res) {console.log(res.data);}}); uni.setStorage({key:'storage_key',data:'',success:function(){ console.log('success'); } });

在不同端的实现不同

1.H5端为localStorage,浏览器限制5M大小,是缓存概念,可能会被清理   (localStorage.setItem(), localStorage.getItem())

2.App端为原生的plus.storage,无大小限制,不是缓存,是持久化的(plus.storage.setItem(), plus.storage.getItem())

注意:(localStorage 存储和取值方式适用数据量较小的数据操作

虽然 plus.storage 大小没有限制,但是plus.storage的存储与获取较慢,原因是  js和原生通信慢。如果使用plus.storage存取数据量较大的数据可以一次性存入或取出,避免频繁操作,影响性能。 )

 

 

二、大量数据,还可以用sqlite,一批一次性写入sqlite(仅可以在手机端使用)

 

1.sqlite使用方法

(首先需要打开sqlited的db库 ->创建表->操作表)

2.具体操作流程:

首先需要在manifest.json的App模块配置里面勾选SQLite(数据库)模块

 

 

3.封装出sqlite使用方法

function openComDB(name, path, callback) {  

    plus.sqlite.openDatabase({  

                    name: name,  

                    path: path,  

                    success: function(e) {   

                                  console.log(‘打开数据库成功’)

                                  callback(e)  

                    },  

                  fail: function(e) {   

                                console.log(‘打开数据库失败’)

                               callback(e);  

                   }  

    })  

}  

function executeSQL(name, sql, callback) {  

    plus.sqlite.selectSql({  

                     name: name,  

                      sql: sql,  

                      success: function(e) {  

                                    // console.log("查询数据库:" + name + ",表:" + sql + ";的");   

                                  callback(e);  

                      },  

                      fail: function(e) {  

                                  console.log("查询数据库失败:" + JSON.stringify(e));  

                                  callback(e);  

                       }  

    })  

}  

export{  

openComDB,  

executeSQL  

}

 

在需要用到的vue文件下,引入上方function; 路径是自己的

eg: import {openComDB,executeSQL} from @/common/sqlite.js

 

4.进入页面调用数据库时,要先打开数据库(调用方法openComDB开启数据库),开启后才可以对数据进行增删改查。

//SQLite

openComDB('loc', '_doc/sqlite.db', res => {  

        console.log('打开数据库');  

 });  

5.接下来时初始化数据(当前数据库已开启的情况下)

创建自己的数据表

createTable() {    

var sqlTable = 'create table if not exists Table("id" INT(10) NOT NULL UNIQUE,"name" CHAR,"gridCode" CHAR)'  

 executeSQL('loc', sqlTable, res => {

         //向表中插入数据

         this.inserteCode()

      })  

 },

inserteCode(){

 for (var i = 0; i < this.sqliteData.length; i++) {  

                   var sqlInsert = "insert into Table values('";   

                   sqlInsert += this.sqliteData[i].[对应属性]+ "'";  

                   sqlInsert += ')';  

                   executeSQL('loc', sqlInsert, res => {//查询数据库数据 可以在这里把sqlite 数据赋值给绑定的data})   }  

}

             

 

以上是uniapp 使用sqlite数据库,存储与获取sqlite数据库数据过程

 

 

 

6.操作sqlite数据库的增删改查

 

1.数据查询

 Var querySqlite = 'select * from '

 plus.sqlite.selectSql({

                  name: 'loc',  

                  sql: querySqlite + name, //查询语句

                  success: res => {   

                               console.log("数据库更新成功"); 

                               resolve(res)

                  },  

                 fail: res => {   

                            console.log("数据库更新失败");

                           reject(res)

                }  

})

2.数据添加

 Var addSqlite = 'insert into userInfo(id,name,gender,avatar) values("'+id+'","'+name+'")'

 plus.sqlite.executeSql({

                 name:'pop',

                 sql:addSqlite ,//添加语句

                 success(e){

                          console.log("数据库更新成功"); 

                          resolve(e);

                 },

                 fail(e){

                          console.log("数据库更新失败");

                          reject(e);

                }

})

3.数据修改

var sqlUpdate = 'update '+name+' set '+lable+'="'+val+'"'+' where '+idx+'="'+idxval+'"';  //更新语句

plus.sqlite.executeSql({

                 name: 'loc',  

                 sql: sqlUpdate ,  

                 success: function(e) {  

                               console.log("数据库更新成功");     

                  },  

                  fail: function(e) {  

                             console.log("数据库更新失败");

                  // failCb(e);  

                  }  

})

 

4.数据删除

var sqlDelete = 'delete from '+name+' where '+sol+'="'+data+'"';//删除语句

plus.sqlite.executeSql({

                name:'loc',

                sql:sqlDelete ,

                success(e){ 

                          console.log("数据库更新成功");     

                          resolve(e);

                 },

                fail(e){

                          console.log("数据库更新失败");

                          reject(e);

                 }

    })

 

posted on 2022-08-25 10:21  紫叶嵋  阅读(717)  评论(0编辑  收藏  举报