javascript
复制代码
// 数据库名称
const namesjk = "sl"
// 存储路径
const path = `_doc/${name}.db`
/** 基本操作
* 查询数据库连接状态 isOpenDatabase
* 无参数
* 返回 true false
*
*
* 关闭数据库 closeDatabase
* 无参数
* Promise 成功/失败
*
*
* 打开/创建数据库 openDatabase
* 无参数
* Promise 成功/失败
*
* 查询 selectSql
* sql
* Promise 成功/失败
*
* 执行 executeSql
* sql
* Promise 成功/失败
*
*
* 事务 transaction
* begin(开始事务)、commit(提交)、rollback(回滚)。
* Promise 成功/失败
*
*/
/** 表操作
*
*
* 创建表 CreateATable
* 表名称 表结构 除id默认的其它字段 {a:{type:'sqlite的数据类型,默认 TEXT',isnull:false}}
* 成功/失败 true false
*
*
* 修改表 UpdateATable
* 表名称 表结构 除id默认的其它字段 {a:{type:'sqlite的数据类型,默认 TEXT',isnull:false}}
* 成功/失败 true false
*
*
* 删除表 DelTable
* 表名称
* 成功/失败 true false
*
*/
/** 增删改查操作
*
* 增加 Increase
* 表名称 数据 {a:1,b:1}
* 返回数据 / 0
*
* 删除 Delete
* 表名称 条件默认id=id
* 返回数据 / 0
*
* 清空 Clear
* 表名称 是否截断
* 返回数据 / 0
*
* 更新 Update
* 表名称 数据 {a:1,b:1} 条件默认id=id
* 返回数据 / 0
*
*
* 查询 Select
* 表名称 数据['a','b']默认* 条件默认
* 返回数据 / 0
*
*
*/
// ***************基本操作******************************
// 查询数据库连接状态
// 返回 true false
export async function isOpenDatabase() {
return plus.sqlite.isOpenDatabase({
name: namesjk,
path: path
})
}
// 关闭数据库
export async function closeDatabase() {
return new Promise((resolve, reject) => {
plus.sqlite.closeDatabase({
name: namesjk,
success(e) {
resolve(e)
},
fail(e) {
reject(e)
}
})
})
}
// 打开/创建数据库
export async function openDatabase() {
return new Promise((resolve, reject) => {
plus.sqlite.openDatabase({
name: namesjk,
path: path,
success(e) {
resolve(e)
},
fail(e) {
reject(e)
}
})
})
}
// 查询
// sql
export async function selectSql(sqlCode) {
return new Promise((resolve, reject) => {
plus.sqlite.selectSql({
name: namesjk,
sql: sqlCode,
success(res) {
resolve(res)
},
fail(e) {
reject(e)
}
})
})
}
// 执行
// sql
export async function executeSql(sqlCode) {
return new Promise((resolve, reject) => {
plus.sqlite.executeSql({
name: namesjk,
sql: sqlCode,
success(res) {
resolve(res)
},
fail(e) {
reject(e)
}
})
})
}
// 事务
// begin(开始事务)、commit(提交)、rollback(回滚)。
export async function transaction(operation) {
return new Promise((resolve, reject) => {
plus.sqlite.transaction({
name: namesjk,
operation: operation,
success(res) {
resolve(res)
},
fail(e) {
reject(e)
}
})
})
}
// *********表操作************************
// 创建表
// 表名称 表结构 除id默认的其它字段 {a:{type:'sqlite的数据类型,默认 TEXT',isnull:false}}
// 成功/失败 true false
export async function CreateATable(name, obj) {
selectSql(`SELECT name FROM sqlite_master WHERE type= 'table' AND name= '${name}'`).then(
(e) => {
if (e.length == 0) {
let sql1 = `create table if not exists ${name} (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
${Object.keys(obj).map(x=>{
return `"${x}" ${obj[x]['type']?obj[x]['type']:'TEXT'} ${obj[x]['isnull']?'NOT NULL':''}`
}).join(',')}
)`
executeSql(sql1).then((e) => {
return true
}).catch((err) => {
console.log("创建表失败:", err)
return false
})
}
}).catch((e) => {
console.log("创建表失败:", err)
return false
})
}
// 修改表
// 表名称 表结构 除id默认的其它字段 {a:{type:'sqlite的数据类型,默认 TEXT',isnull:false}}
// 成功/失败 true false
export async function UpdateATable(name, obj) {
DelTable(name)
CreateATable(name, obj)
}
// 删除表
// 表名称
// 成功/失败 true false
export async function DelTable(name) {
selectSql(`SELECT name FROM sqlite_master WHERE type= 'table' AND name= '${name}'`).then(
(e) => {
if (e.length > 0) {
let sql1 = `drop table ${name}`
executeSql(sql1).then((e) => {
return true
}).catch((err) => {
console.log("删除表失败:", err)
return false
})
}
}).catch((e) => {
console.log("删除表失败:", err)
return false
})
}
// **************增删改查********************************
// 增加
// 表名称 数据 {a:1,b:1}
export async function Increase(name, obj) {
let sql1 = `INSERT INTO ${name} (${Object.keys(obj).map(x=>{
return `${x}`
}).join(',')}) VALUES (${Object.keys(obj).map(x=>{
return `${obj[x]}`
}).join(',')});`
executeSql(sql1).then((e) => {
return e
}).catch((err) => {
console.log("增加失败:", err)
return 0
})
}
// 删除
// 表名称 条件默认id=id
export async function Delete(name, sql) {
let sql1 = `delete from ${name} where ${sql?sql:'id=id'}`
executeSql(sql1).then((e) => {
return e
}).catch((err) => {
console.log("删除失败:", err)
return 0
})
}
// 清空
// 表名称 是否截断
export async function Clear(name,isTRUNCATE) {
let sql1 = isTRUNCATE?`TRUNCATE ${name}`:`delete from ${name}`
executeSql(sql1).then((e) => {
return e
}).catch((err) => {
console.log("删除失败:", err)
return 0
})
}
// 更新
// 表名称 数据 {a:1,b:1} 条件默认id=id
export async function Update(name, obj, sql) {
let sql1 = `UPDATE ${name} SET ${Object.keys(obj).map(x=>{
return `${x} = ${obj[x]} `
}).join(',')} where ${sql?sql:'id=id'}`
executeSql(sql1).then((e) => {
return e
}).catch((err) => {
console.log("更新失败:", err)
return 0
})
}
// 查询
// 表名称 数据['a','b']默认* 条件默认
export async function Select(name, obj, sql) {
let sql1 = `select ${obj && obj.length>0?obj.join(','):'*'} from ${name} ${sql?'where ' + sql:''}`
selectSql(sql1).then((e) => {
return e
}).catch((err) => {
console.log("查询失败:", err)
return 0
})
}