项目背景
项目工作环境网络不好,或者涉及机密数据等,需要断网情况下的数据采集。当然我们可以通过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注意事项