uniapp使用SQLite数据库(离线缓存)
2023-09-14 本文已影响0人
月下小酌_dbd5
-
1.在manifest.json APP模块配置中选中SQLite(数据库)
image.png - 2.可根据官方文档进行简单封装 (网址:https://www.html5plus.org/doc/zh_cn/sqlite.html)
新建文件 sqlite.js
/** 数据库是否打开--打开了就返回true,否则返回false
* @param {Object} name 数据库名称
* @param {Object} path 数据库地址,uniapp推荐以下划线为开头
*/
function isOpen(name, path) {
return plus.sqlite.isOpenDatabase({name,path})
}
/** 创建数据库或者打开
* @param {Object} name 数据库名称
* @param {Object} path 数据库地址,uniapp推荐以下划线为开头
*/
function openSqlite(name, path) {
return new Promise((resolve, reject) => {
//这plus.sqlite只在手机上运行
plus.sqlite.openDatabase({
name: name, //数据库名称
path: path, //数据库地址,uniapp推荐以下划线为开头
success(e) {
resolve(e); //成功回调
},
fail(e) {
reject(e); //失败回调
}
})
})
}
//在该数据库里创建表格/添加数据
//数据库不能存对象,数组 需要转json后再存
/** 执行sql命令 对数据库 执行增删改等操作的SQL语句
* @param {Object} name 数据库名称
* @param {Object} sql sql命令
*/
function executeSql(name, sql) {
return new Promise((resolve, reject) => {
plus.sqlite.executeSql({
name: name,
sql: sql,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
}
/** 执行查询的SQL语句
* @param {Object} name 数据库名称
* @param {Object} sql sql命令
*/
function selectSql(name, sql) {
if (name !== undefined) {
return new Promise((resolve, reject) => {
plus.sqlite.selectSql({
name: name,
sql: sql,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
} else {
return new Promise((resolve, reject) => {
reject("错误查询")
});
}
}
/** 关闭数据库
* @param {Object} name 数据库名称
*/
function closeSQL(name) {
return new Promise((resolve, reject) => {
plus.sqlite.closeDatabase({
name: name,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
}
/**
* 执行事务
* @param {Object} name 数据库名称
* @param {Object} operationc begin(开始事务)、commit(提交)、rollback(回滚)
*/
function transactionDB(name,operationc) {
return new Promise((resolve, reject) => {
plus.sqlite.transaction({
name: name,
operation: operation,
success: function(e){
resolve(operation,'成功!')
},
fail: function(e){
console.log('transaction failed: '+JSON.stringify(e));
reject(operation,'失败!')
}
});
})
}
export default {
isOpen,
openSqlite,
selectSql,
executeSql,
closeSQL,
transactionDB
}
- 3.常用SQL语句
//新建表 account_tb
create table if not exists account_tb ( 'id' integer primary key autoincrement,'name' varchar(255), 'gender' varchar(255), 'deptId' varchar(255));
//插入数据
insert into account_tb values (null,'tyy','女');
//修改数据
update account_tb set name= '唐园园' where id=1;
//删除数据
delete from account_tb where id=1;
//数据查询并分页(根据id 排序,搜索条件 gender)
`select * from account_tb where gender='${gender}' order by 'id' asc limit ${pageSize*(pageNumber - 1)},${pageSize}`;
//模糊查询like % %
`select * from account_tb where name like ' %${gender}%' `;
//连表查询(left/right/inner join 左/右/内 连接)
`select * from account_tb inner join dept_tb as wd on account_tb.deptId = wd.id`;
//获取总数并去重 (distinct 去重)
select distinct count(*) as rowCount from account_tb;