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())
    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里面勾选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 => {   
					        resolve(res)
					   },  
					   fail: res => {   
					       reject(res)
					   }  
			})
//2.数据添加
var addSqlite = 'insert into userInfo(id,name,gender,avatar) values("'+id+'","'+name+'")'
    plus.sqlite.executeSql({
					name:'pop',
					sql:addSqlite ,//添加语句
					success(e){
						resolve(e);
					},
					fail(e){
						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){ 
							resolve(e);
						},
						fail(e){
							reject(e);
						}
					})

总结
以上就是文章全部内容了,感谢你看到最后,喜欢本篇文章的话还望三连支持一下,感谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小纯洁w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值