const dbName = "sqlite" // "user", "log" export const openDb = () => { //如果数据库存在则打开,不存在则创建。 return new Promise((resolve, reject) => { plus.sqlite.openDatabase({ name: dbName, //数据库名称 path: `_doc/${dbName}.db`, //数据库地址 success(e) { resolve(e); }, fail(e) { reject(e); } }) }) } // 查询所有数据表名 export const getTable = () => { return new Promise((resolve, reject) => { plus.sqlite.selectSql({ name: dbName, sql: "select * FROM sqlite_master where type='table'", success(e) { resolve(e); }, fail(e) { console.log(e) reject(e); } }) }) } // 查询表数据总条数 export const getCount = (tabName) => { return new Promise((resolve, reject) => { plus.sqlite.selectSql({ name: dbName, sql: "select count(*) as num from " + tabName, success(e) { resolve(e); }, fail(e) { reject(e); } }) }) } // 查询表是否存在 export const isTable = (tabName) => { return new Promise((resolve, reject) => { plus.sqlite.selectSql({ name: dbName, sql: `select count(*) as isTable FROM sqlite_master where type='table' and name='${tabName}'`, success(e) { // console.log(e) resolve(e[0].isTable ? true : false); }, fail(e) { console.log(e) reject(e); } }) }) } /** * 修改数据 * @param {String} tabName 表名 * @param {Object} setData 修改数据 * @param {String} setName 查询字段名 * @param {String} setVal 查询字段值 */ export const updateSQL = (tabName, setData, setName, setVal) => { if (JSON.stringify(setData) !== '{}') { let dataKeys = Object.keys(setData) let setStr = '' dataKeys.forEach((item, index) => { // console.log(setData[item]) setStr += ( `${item} = ${JSON.stringify(setData[item])}${dataKeys.length - 1 !== index ? "," : ""}`) }) return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: dbName, sql: `update ${tabName} set ${setStr} where ${setName} = "${setVal}"`, success(e) { resolve(e); }, fail(e) { console.log(e) reject(e); } }) }) } else { return new Promise((resolve, reject) => { reject("错误") }); } } //删除数据库数据 export const deleteInformationType = (tabName,setData) => { if (JSON.stringify(setData) !== '{}') { let dataKeys = Object.keys(setData) let setStr = '' dataKeys.forEach((item, index) => { // console.log(setData[item]) setStr += ( `${item}=${JSON.stringify(setData[item])}${dataKeys.length - 1 !== index ? " and " : ""}`) }) return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: dbName, sql: `delete from ${tabName} where ${setStr}`, success(e) { resolve(e); }, fail(e) { reject(e); } }) }) } else { return new Promise((resolve, reject) => { reject("错误") }); } } //关闭数据库 export const closeSQL = (name) => { return new Promise((resolve, reject) => { plus.sqlite.closeDatabase({ name: 'pop', success(e) { resolve(e); }, fail(e) { reject(e); } }) }) } //监听数据库是否开启 export const isOpen = () => { let open = plus.sqlite.isOpenDatabase({ name: dbName, path: `_doc/${dbName}.db`, }) return open; } // 创建用户表 export const addUserTable = () => { const tabName = 'user' // tabName不能用数字作为表格名的开头 return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: dbName, sql: `create table if not exists ${tabName}("id" INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255) NOT NULL, ic VARCHAR(255), ic2 VARCHAR(255), number CHAR(50), type CHAR(50) )`, success(e) { resolve(e); }, fail(e) { console.log(e) reject(e); } }) }) } // 创建日志表 export const addLogTable = () => { const tabName = 'log' // tabName不能用数字作为表格名的开头 return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: dbName, sql: `create table if not exists ${tabName}("id" INTEGER PRIMARY KEY AUTOINCREMENT,"name" VARCHAR(255) NOT NULL,action VARCHAR(255) NOT NULL, create_time datetime DEFAULT (datetime('now', 'localtime')))`, success(e) { resolve(e); }, fail(e) { console.log(e) reject(e); } }) }) } // 创建内镜存储表 export const addScopeTable = () => { const tabName = 'scope' // tabName不能用数字作为表格名的开头 return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: dbName, sql: `create table if not exists ${tabName}("key" INTEGER NOT NULL,"ic" CHAR(50) , "rfid" CHAR(50), "name" VARCHAR(255), time datetime DEFAULT (datetime('now', 'localtime')))`, success(e) { resolve(e); }, fail(e) { console.log(e) reject(e); } }) }) } // 创建内镜存储表 export const addEndoTable = () => { const tabName = 'endo' // tabName不能用数字作为表格名的开头 return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: dbName, sql: `create table if not exists ${tabName}("id" INTEGER PRIMARY KEY AUTOINCREMENT,"endoscope_id" CHAR(255), "name" CHAR(50), "brand" CHAR(50),"model" CHAR(50), "type" CHAR(50), "rfid" CHAR(50) ,"ic" VARCHAR(255), "ic2" VARCHAR(255), time datetime DEFAULT (datetime('now', 'localtime')))`, success(e) { resolve(e); }, fail(e) { console.log(e) reject(e); } }) }) } /** * 添加数据 * @param {String} tabName 表名 * @param {Object} obj 添加数据 */ export const addTabItem = (tabName,obj) => { if (obj) { let keys = Object.keys(obj) let keyStr = keys.toString() let valStr = '' keys.forEach((item, index) => { if (keys.length - 1 == index) { valStr += ('"' + obj[item] + '"') } else { valStr += ('"' + obj[item] + '",') } }) // console.log(valStr) let sqlStr = `insert into ${tabName} (${keyStr}) values(${valStr})` // console.log(sqlStr) return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: dbName, sql: sqlStr, success(e) { resolve(e); }, fail(e) { // console.log(e) reject(e); } }) }) } else { return new Promise((resolve, reject) => { reject("错误") }) } } // 合并数据 export const mergeSql = (name,tabName,tabs) => { if (!tabs || tabs.length == 0) { return new Promise((resolve, reject) => { reject("错误") }) } let itemValStr = '' tabs.forEach((item, index) => { let itemKey = Object.keys(item) let itemVal = '' itemKey.forEach((key, i) => { if (itemKey.length - 1 == i) { if (typeof item[key] == 'object') { itemVal += (`'${JSON.stringify(item[key])}'`) } else { itemVal += (`'${item[key]}'`) } } else { if (typeof item[key] == 'object') { itemVal += (`'${JSON.stringify(item[key])}',`) } else { itemVal += (`'${item[key]}',`) } } }) if (tabs.length - 1 == index) { itemValStr += ('(' + itemVal + ')') } else { itemValStr += ('(' + itemVal + '),') } }) let keys = Object.keys(tabs[0]) let keyStr = keys.toString() return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: name, sql: `insert or ignore into ${tabName} (${keyStr}) values ${itemValStr}`, success(e) { resolve(e); }, fail(e) { // console.log(e) reject(e); } }) }) } /** * 获取分页数据库数据 * @param {String} tabName 表名 * @param {Number} num 页码 * @param {Number} size 每页数据条数 * @param {String} byName 排序字段 * @param {String} byType 排序方式 */ export const getDataList = async (tabName, num = 1, size = 15, byName, byType) => { let count = 0 let sql = '' let numindex = 0 let total = 0 await getCount(tabName).then((resNum) => { count = Math.ceil(resNum[0].num / size) total = resNum[0].num }) if(((num - 1) * size) == 0) { numindex = 0 } else { numindex = ((num - 1) * size) + 1 } sql = `select * from ${tabName}` if(byName && byType) { // desc asc sql += ` order by ${byName} ${byType}` } sql += ` limit ${numindex},${size}` if (count < num - 1) { return new Promise((resolve, reject) => { reject("无数据") }); } else { return new Promise((resolve, reject) => { plus.sqlite.selectSql({ name: dbName, // sql: "select * from userInfo limit 3 offset 3", sql:sql , success(e) { let data = { list: e, totalPage: count, total: total } resolve(data); }, fail(e) { reject(e); } }) }) } } //查询数据库数据 export const selectDataList = (tabName,setData,byName,byType) => { let setStr = '' let sql = '' if (JSON.stringify(setData) !== '{}') { let dataKeys = Object.keys(setData) dataKeys.forEach((item, index) => { // console.log(setData[item]) setStr += ( `${item}=${JSON.stringify(setData[item])}${dataKeys.length - 1 !== index ? " and " : ""}`) }) // console.log(setStr) sql = `select * from ${tabName} where ${setStr}` } else { sql = `select * from ${tabName}` } if(byName && byType) { // desc asc sql += ` order by ${byName} ${byType}` } // console.log(sql) if (tabName !== undefined) { return new Promise((resolve, reject) => { plus.sqlite.selectSql({ name: dbName, sql: sql, success(e) { resolve(e); }, fail(e) { console.log(e) reject(e); } }) }) } else { return new Promise((resolve, reject) => { reject("错误") }); } } // 删除数据表 export const dropTable = (tabName) => { return new Promise((resolve, reject) => { plus.sqlite.executeSql({ name: dbName, sql: `DROP TABLE ${tabName}`, success(e) { resolve(e); }, fail(e) { reject(e); } }) }) }