uniapp使用SQLite数据库(离线缓存)

2023-09-14  本文已影响0人  月下小酌_dbd5
新建文件 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
}



//新建表 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;

上一篇 下一篇

猜你喜欢

热点阅读