当前位置:   article > 正文

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

uniapp离线数据保存本地

项目背景

项目工作环境网络不好,或者涉及机密数据等,需要断网情况下的数据采集。当然我们可以通过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: '错误信息'}
		}
	})
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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: '错误信息'}
		}
	})
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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));
		}
	});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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: '错误信息'}
		},
	})
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

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: '错误信息'}
		}
	});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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

相关文档

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/426398
推荐阅读
相关标签
  

闽ICP备14008679号