随笔 - 41  文章 - 0  评论 - 2  阅读 - 36341
  2022年8月25日

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 @ 2022-08-25 10:21 紫叶嵋 阅读(1111) 评论(0) 推荐(0) 编辑
摘要: 一、renderjs使用 renderjs是一个运行在视图层的js。它只支持app-vue和h5。 renderjs的主要作用有2个: 1.大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力 2.在视图层操作dom,运行for web的js库 使用时的注意事项 1.目前仅支持内联使用。 2.不 阅读全文
posted @ 2022-08-25 10:21 紫叶嵋 阅读(6794) 评论(0) 推荐(0) 编辑
摘要: 文件上传功能 一、 Uniapp 官方提供了文件选择api ,uni.chooseFile(OBJECT) 官方提供的使用方法和说明: 从本地选择文件。 本API主要用于选择非媒体文件,如果选择的文件是媒体文件,另有3个专用API: OBJECT 参数说明 参数名 类型 默认值 必填 说明 平台差异 阅读全文
posted @ 2022-08-25 10:20 紫叶嵋 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 日历功能 功能介绍:日历可收缩,由月日历转换为周日历,日历左右滑动时,若当前为月日历,切换月份,若当前为周日历,切换星期。 1.调用示例 2.calendar 属性说明 属性名 类型 默认值 说明 monthDate Array [ ] 月份信息 monthDotList Array [ ] 打点信 阅读全文
posted @ 2022-08-25 10:20 紫叶嵋 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 首先先介绍一下uniapp 应用的生命周期: 应用生命周期(仅可在App.vue中监听) (1)onLaunch :当uni-app 初始化完成时触发(全局只触发一次)App.vue里的onLaunch中option作用:获取用户进入小程序或退出小程序的场景值 (2)onShow :当 uni-ap 阅读全文
posted @ 2022-08-25 10:19 紫叶嵋 阅读(1028) 评论(0) 推荐(0) 编辑
摘要: 1. 获取和引入 TrackLogData SDK 1.1. 异步方式 (推荐) 引入场景:通常情况下使用。 1.1.1. 本地手动指定sdk版本(vue SPA项目) 最新版本: //sa.a5.petrochina/stats/tld.globals.min.js 将下面代码放入</head>标 阅读全文
posted @ 2022-08-25 10:05 紫叶嵋 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 命名规范 变量长度:变量名不要太长,尽量不超过5个单词,若太长可以使用单词缩写 变量缩写:变量缩写可以采用两种缩写方案: 1.使用单词前几个字母,能表述含义即可,控制在3-5个字母(具体长度自定)。如: 医院:hosp 医生:doc 选项:opt 2.若页面内同时出现“文档”和“医生”那么doc会冲 阅读全文
posted @ 2022-08-25 10:04 紫叶嵋 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 前端开发命名规范 前端开发命名规范 常见的不规范命名 见名知义 命名规则 文件资源命名 变量命名 函数 常量 类的成员 注释规范 函数 ( 方法 ) 注释 类的命名 .html/.jsp文件的命名 命名的规范有多重要呢?因为我们的作品代码不仅仅是我们自己看的,如果我们是在一个团队开发中,我们自己所写 阅读全文
posted @ 2022-08-25 10:04 紫叶嵋 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 不对Vite做具体详细介绍,主要描述升级过程 wp2vite: wp2vite 不会删除你的项目的webpack的配置文件,但是会在你的项目中插入vite的配置文件,相较于webpack,vite开发环境构建速度可以提升80%左右,构建生产环境能够提升50%左右。 wp2vite支持React、Vu 阅读全文
posted @ 2022-08-25 10:01 紫叶嵋 阅读(2690) 评论(0) 推荐(0) 编辑
摘要: 工厂模式大体分为三类:简单工厂模式、工厂方法模式、抽象工厂模式。 在我们日常的实现功能逻辑中,最基础的一种方法是这样的: 有一个体育器材店,每一种类型的运动器材都有名称和简介。以篮球为例: 1 2 3 4 5 6 7 var Basketball = function () { this.info= 阅读全文
posted @ 2022-08-25 09:58 紫叶嵋 阅读(83) 评论(0) 推荐(0) 编辑
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示