uniapp使用SQLite數(shù)據(jù)庫(離線緩存)

新建文件 sqlite.js
/** 數(shù)據(jù)庫是否打開--打開了就返回true,否則返回false
 * @param {Object} name 數(shù)據(jù)庫名稱
 * @param {Object} path 數(shù)據(jù)庫地址,uniapp推薦以下劃線為開頭
 */
function isOpen(name, path) {
    return  plus.sqlite.isOpenDatabase({name,path})
}

/** 創(chuàng)建數(shù)據(jù)庫或者打開
 * @param {Object} name  數(shù)據(jù)庫名稱
 * @param {Object} path  數(shù)據(jù)庫地址,uniapp推薦以下劃線為開頭
 */
function openSqlite(name, path) {
    return new Promise((resolve, reject) => {
    //這plus.sqlite只在手機(jī)上運(yùn)行
        plus.sqlite.openDatabase({
            name: name, //數(shù)據(jù)庫名稱
            path: path, //數(shù)據(jù)庫地址,uniapp推薦以下劃線為開頭
            success(e) {
                resolve(e); //成功回調(diào)
            },
            fail(e) {
                reject(e); //失敗回調(diào)
            }
        })
    })
}

//在該數(shù)據(jù)庫里創(chuàng)建表格/添加數(shù)據(jù)
//數(shù)據(jù)庫不能存對象,數(shù)組  需要轉(zhuǎn)json后再存
/** 執(zhí)行sql命令 對數(shù)據(jù)庫  執(zhí)行增刪改等操作的SQL語句
 * @param {Object} name 數(shù)據(jù)庫名稱
 * @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);
            }
        })
    })
}

/** 執(zhí)行查詢的SQL語句
 * @param {Object} name 數(shù)據(jù)庫名稱
 * @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("錯誤查詢")
        });
    }
}

/** 關(guān)閉數(shù)據(jù)庫 
 * @param {Object} name 數(shù)據(jù)庫名稱
 */
function closeSQL(name) {
    return new Promise((resolve, reject) => {
        plus.sqlite.closeDatabase({
            name: name,
            success(e) {
                resolve(e);
            },
            fail(e) {
                reject(e);
            }
        })
    })
}
/**
 * 執(zhí)行事務(wù) 
 * @param {Object} name 數(shù)據(jù)庫名稱
 * @param {Object} operationc begin(開始事務(wù))、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));
//插入數(shù)據(jù)
insert into account_tb values (null,'tyy','女');
//修改數(shù)據(jù)
update account_tb set name= '唐園園' where id=1;
//刪除數(shù)據(jù)
delete from account_tb where id=1;
//數(shù)據(jù)查詢并分頁(根據(jù)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  左/右/內(nèi) 連接)
`select * from account_tb inner join dept_tb as wd on account_tb.deptId = wd.id`;
//獲取總數(shù)并去重 (distinct 去重)
select distinct count(*) as rowCount from account_tb;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容