uniapp app端开发---离线状态数据保存

项目背景

项目工作环境网络不好,或者涉及机密数据等,需要断网情况下的数据采集。当然我们可以通过localStorage来实现数据的本地存储,但这种方式,只能缓存少量切单一的数据。html5+ 有一个模块 sqlite,便可以实现我们的需求。

sqlite模块中的方法

plus.sqlite.openDatabase(options);

如果数据库存在则打开,不存在则创建。

  • options
    • name: ( String ) 必选 数据库名称
    • path: ( String ) 必选 数据库路径
    • ⚠️ 根据官方文档推荐来 使用 _doc/x.db,因为该目录下既可以读写,又是该应用私有目录。

    • success: ( SQLiteSuccessCallback ) 可选 打开数据库成功回调函数
    • fail: ( SQLiteFailCallback ) 可选 打开数据库失败回调函数
//example
function openDB() {
	plus.sqlite.openDatabase({
		name: 'test',
		path: '_doc/test.db',
		success: function() {
			console.log('数据库打开成功')
		},
		fail: function(e) {
			console.error(e)
			// {code: '错误代码', message: '错误信息'}
		}
	})
}

plus.sqlite.isOpenDatabase(options);

数据库已经打开则返回true,数据库没有打开则返回false。 ⚠️HBuilderX1.9.0及以上版本支持。

  • options
    • name: ( String ) 必选 数据库名称
    • path: ( String ) 必选 数据库路径
  • return
    • true:数据库打开成功;false:数据库打开失败
//example
function isOpenDB() {
	const res = plus.sqlite.isOpenDatabase({
		name: 'test',
		path: '_doc/test.db',
	})
	console.log(res)
	// true|false
}

plus.sqlite.closeDatabase(options);

⚠️完成数据库操作后,必须关闭数据库,否则可能会导致系统资源无法释放。

  • options
    • name: ( String ) 必选 数据库名称
    • success: ( SQLiteSuccessCallback ) 可选 关闭数据库成功回调函数
    • fail: ( SQLiteFailCallback ) 可选 关闭数据库失败回调函数
//example
function closeDB() {
	plus.sqlite.closeDatabase({
		name: 'test',
		success: function() {
			console.log('数据库关闭成功')
		},
		fail: function(e) {
			console.error(e)
			// {code: '错误代码', message: '错误信息'}
		}
	})
}

plus.sqlite.transaction(options);

执行事务

  • options
    • name: ( String ) 必选 数据库名称
    • operation: ( String ) 必选 需要执行的事务操作 可选值:begin(开始事务)、commit(提交)、rollback(回滚)。
    • success: ( SQLiteSuccessCallback ) 可选 执行事务成功回调函数
      回调函数无返回参数。
    • fail: ( SQLiteFailCallback ) 可选 执行事务失败回调函数
//官方案例
function transactionDB(){
	plus.sqlite.transaction({
		name: 'first',
		operation: 'begin',
		success: function(e){
			console.log('transaction success!');
		},
		fail: function(e){
			console.log('transaction failed: '+JSON.stringify(e));
		}
	});
}

plus.sqlite.executeSql(options);

执行增删改 建表等操作的SQL语句

  • options
    • name: ( String ) 必选 数据库名称
    • sql: ( Array[String] | String ) 必选 需要执行的SQL语句
    • ⚠️之所以 用字符串数组 实现执行多条,是因为Android平台不支持SQL语句中使用“;”分割多条命令

    • success: ( SQLiteSuccessCallback ) 可选 执行SQL语句成功回调函数
    • fail: ( SQLiteFailCallback ) 可选 执行SQL语句失败回调函数
function executeSQL() {
	plus.sqlite.executeSql({
		name: 'test',
		sql: `create table if not exists users("name" CHAR(25),"gender" bit default 1,"age" INT(11))`,
		success: function() {
			console.log('x.db 新建成功')
			plus.sqlite.executeSql({
				name: 'x.db',
				sql: `insert into users values("小美", 0, 20)`,
				success: function() {
					console.log('新增数据成功')
				},
				fail: function(e) {
					console.error(e)
					// {code: '错误代码', message: '错误信息'}
				}
			})
		},
		fail: function(e) {
			console.error(e)
			// {code: '错误代码', message: '错误信息'}
		},
	})
}

plus.sqlite.selectSql(options);

执行查询的SQL语句

  • options
    • name: ( String ) 必选 数据库名称
    • sql: ( String ) 必选 需要查询的SQL语句
    • success: ( SQLiteSuccessCallback ) 可选 执行SQL语句成功回调函数
    • ⚠️ 回调函数返回参数为JSON对象数组,其中JSON对象为查询的结果。 如果未查询到数据则返回参数为空数组。

    • fail: ( SQLiteFailCallback ) 可选 执行SQL语句失败回调函数
//example
function selectSQL() {
	plus.sqlite.selectSql({
		name: 'test',
		sql: 'select * from users',
		success: function(data){
			console.log('selectSql success: ');
			for(var i in data){
				console.log(data[i]);
				//{name: "小美", gender: 0, age: 20}
			}
		},
		fail: function(e){
			console.error(e);
			// {code: '错误代码', message: '错误信息'}
		}
	});
}

至此 sqlite 模块,介绍完毕
如果要访问 我们创建的 sqlite 数据库,可以查看这篇文章 访问移动端 sqlite

相关文档

5+API文档
5+API错误代码
uni-app使用plus注意事项

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值