uni-app中使用sqlite对本地缓存下数据进行处理

都是过来人没有太多介绍,直接上代码

附(H5+ 的SQLite传送门):https://www.html5plus.org/doc/zh_cn/sqlite.html

前提:

1.App模块权限配置选中SQLite

2.自定义调试基座

1.简单操作页面

    <view>
		<button type="default" @click="isOpenDatabase">判断数据库是否打开</button>
		<button type="default" @click="openDatabase">打开数据库</button>
		<button type="default" @click="closeDatabase">关闭数据库</button>
		<button type="default" @click="createChatTable">创建表</button>
		<button type="default" @click="dropTable">删除表</button>
		<button type="default" @click="transaction">执行事务</button>
		<button type="default" @click="insertChatRow">新增数据</button>
		<button type="default" @click="insertListChatRow">批量新增数据</button>
		<button type="default" @click="deleteChatRow">删除所有数据</button>
		<button type="default" @click="selectSql">查询数据</button>
	</view>

2.模拟数据

    data() {
			return {
				dbName: 'dianji_chat',
				dbPath: '_doc/dianji_chat.db',
				dbTable: 'dianji_chat',
				dbIsOpen: false,
				chatText: {
					id: 1,
					fromId: '123',
					toId: '321',
					content: '你好!',
					flag: 1
				},
				chatText1: [
					{
						id: 11,
						fromId: '123',
						toId: '321',
						content: '你好!',
						flag: 1
					},
					{
						id: 12,
						fromId: '123',
						toId: '321',
						content: '你好!',
						flag: 1
					}
				],
            }
        }

3.function 代码,不做具体说明

 

        methods: {
			createChatTable() {
				let sql = 'CREATE TABLE if not exists ' + this.dbTable +
					' ( "id" varchar(32) NOT NULL,"content" varchar(1024),"fromId" varchar(32), "toId" varchar(32), "flag" varchar(2), PRIMARY KEY ("id"));'
				this.executeSql(sql)
			},
			openDatabase() {
				plus.sqlite.openDatabase({
					name: this.dbName,
					path: this.dbPath,
					success: function(e) {
						console.log('打开数据库成功')
					},
					fail: function(e) {
						console.log(e,'打开数据库失败')
					}
				});
			},
			isOpenDatabase() {
				let res = plus.sqlite.isOpenDatabase({
					name: this.dbName,
					path: this.dbPath
				});
				if (res) {
					console.log(res,'数据库已打开')
				} else {
					console.log(res,'数据库未打开')
				}
			},
			closeDatabase() {
				plus.sqlite.closeDatabase({
					name: this.dbName,
					success: function(e) {
						console.log(JSON.stringify(e),'closeDatabase dianji_chat success!');
					},
					fail: function(e) {
						console.log('closeDatabase failed: ' + JSON.stringify(e));
					}
				});
			},
			insertChatRow() {
				let data = this.chatText
				data.id++
				let sql = "insert into " + this.dbTable +  " values('" + data.id + "','" + data.content +
					"','" + data.fromId + "','" + data.toId + "'," + data.flag + ")";
				this.executeSql(sql)
			},
			insertListChatRow() {
				let data = this.chatText1
				let sql = '';
				for(let i = 0; i < data.length; i++) {
					sql = "insert into " + this.dbTable +  " values('" + data[i].id + "','" + data[i].content +
						"','" + data[i].fromId + "','" + data[i].toId + "'," + data[i].flag + ")";
					this.executeSql(sql)
				}
			},
			deleteChatRow() {
				let sql = "delete from " + this.dbTable;
				this.executeSql(sql)
			},
			selectSql() {
				let curPage = 1
				let pageSize = 20
				let fromId = '123'
				let sql = 'select * from ' + this.dbTable + ' where fromId=' + fromId +
					' limit ' + pageSize + ' offset ' + (curPage - 1) * pageSize;
				this.executeSql(sql)
			},
			dropTable() {
				let sql = 'DROP TABLE ' + this.dbTable + ';'
				plus.sqlite.executeSql({
					name: this.dbName,
					sql: sql,
					success: function(e) {
						console.log("删除数据表成功");
					},
					fail: function(e) {
						console.log('executeSql failed: ' + JSON.stringify(e));
					}
				})
			},
            transaction(){
				plus.sqlite.transaction({
					name: this.dbName,
					operation: 'begin',
					success: function(e){
						console.log('transaction success!');
					},
					fail: function(e){
						console.log('transaction failed: '+JSON.stringify(e));
					}
				});
			},
			executeSql(sql) {
				plus.sqlite.selectSql({
					name: this.dbName,
					sql: sql,
					success: function(data) {
						console.log(data,'---------------')
					},
					fail: function(e) {
						console.log('selectSql failed: ' + JSON.stringify(e));
					}
				});
			},
        }

(注:1.进程关闭数据库关闭,数据仍在缓存。)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值