lxp_Maxcess/utils/dbHelper/SqlHelper.js
2025-04-09 18:55:14 +08:00

260 lines
5.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export default {
dbName: 'ScanDB', // 数据库名称
dbPath: '_downloads/ScanDB.db', // 数据库地址,推荐以下划线为开头 _doc/xxx.db
// 判断数据库是否打开
isOpen() {
// 数据库打开了就返回 true,否则返回 false
var open = plus.sqlite.isOpenDatabase({
name: this.dbName, // 数据库名称
path: this.dbPath // 数据库地址
})
return open
},
// 创建数据库 或 有该数据库就打开
openSqlite() {
return new Promise((resolve, reject) => {
// 打开数据库
plus.sqlite.openDatabase({
name: this.dbName,
path: this.dbPath,
success(e) {
resolve(e) // 成功回调
},
fail(e) {
reject(e) // 失败回调
}
})
})
},
// 关闭数据库
closeSqlite() {
return new Promise((resolve, reject) => {
plus.sqlite.closeDatabase({
name: this.dbName,
success(e) {
resolve(e)
},
fail(e) {
reject(e)
}
})
})
},
// 数据库删表 sql:'DROP TABLE dbTable'
dropTable(dbTable) {
console.log(`DROP TABLE ${dbTable}`)
return new Promise((resolve, reject) => {
plus.sqlite.executeSql({
name: this.dbName,
sql: `DROP TABLE ${dbTable}`,
success(e) {
resolve(e)
},
fail(e) {
reject(e)
}
})
})
},
//-----------------------js对象方法简化操作-------------
///原生的sql操作
SqlExecute(sql) {
console.log(sql)
return new Promise((resolve, reject) => {
plus.sqlite.executeSql({
name: this.dbName,
sql: sql,
success(e) {
// console.log(e)
resolve(e)
},
fail(e) {
console.log(e)
reject(e)
}
})
})
},
//执行原生的select语句
SqlSelect(sql) {
console.log(sql)
return new Promise((resolve, reject) => {
plus.sqlite.selectSql({
name: this.dbName,
sql: sql,
success(e) {
console.log(e)
resolve(e)
},
fail(e) {
console.log(e)
reject(e)
}
})
})
},
//查询表是否存在
JsIsTable(tabName) {
return new Promise((resolve, reject) => {
plus.sqlite.selectSql({
name: this.dbName,
sql: `select count(*) as isTable FROM sqlite_master where type='table' and name='${tabName}'`,
success(e) {
resolve(e[0].isTable ? true : false);
},
fail(err) {
console.log(err);
reject(err);
}
});
});
},
//通过对象创建数据库,使用对象参数
JsCreateTable(dbTable, data) {
data = Object.entries(data).map(item => {
return item[0] + ' ' + item[1]
}).join(',')
var sql = `CREATE TABLE IF NOT EXISTS ${dbTable}("id" INTEGER PRIMARY KEY AUTOINCREMENT,${data})`
return this.SqlExecute(sql)
},
//通过对象创建数据库,使用对象的数据类型
JsCreateTableType(dbTable, data) {
data = Object.entries(data).map(item => {
var typeName = ''
switch (item[1].constructor) {
case Number:
if (Math.floor(item[1]) == item[1]) {
typeName = 'INTEGER'
} else {
typeName = 'REAL'
}
break
case String:
typeName = 'TEXT'
break
case Boolean:
typeName = 'BOOLEAN'
break
case Date:
typeName = 'TEXT'
break
}
return item[0] + ' ' + typeName
}).join(',')
var sql = `CREATE TABLE IF NOT EXISTS ${dbTable}("id" INTEGER PRIMARY KEY AUTOINCREMENT,${data})`
// console.log(sql)
return this.SqlExecute(sql)
},
//通过对象插入数据
JsInsertTableData(dbTable, data) {
var condition = []
var sqlValue = []
Object.entries(data).forEach(item => {
condition.push(`'${item[0]}'`)
if (item[1] != undefined) {
if (item[1].constructor == String) {
sqlValue.push(`'${item[1]}'`)
} else if (item[1].constructor == Date) {
sqlValue.push(`'${item[1].format('yyyy-MM-dd hh:mm:ss')}'`)
} else {
sqlValue.push(item[1])
}
}
})
condition = condition.join(',')
sqlValue = sqlValue.join(',')
var sql = `INSERT INTO ${dbTable} (${condition}) VALUES(${sqlValue})`
return this.SqlExecute(sql)
},
//通过对象选择数据
JsSelectTableData(dbTable, data) {
var sql = ''
var condition = []
if (data == undefined || data == null || data == {}) {
sql = `SELECT * FROM ${dbTable}`
} else if(data.constructor == Number){
sql = `SELECT * FROM ${daTable} where id = ${data}`
} else {
Object.entries(data).forEach(item => {
if (item[1] != undefined && item[0] != 'id') {
if (typeof(item[1] == 'string')) {
condition.push(` ${item[0]} = '${item[1]}' `)
} else {
condition.push(` ${item[0]} = ${item[1]} `)
}
}
})
condition = condition.join('AND')
sql = `SELECT * FROM ${dbTable} WHERE ${condition}`
}
return this.SqlSelect(sql)
},
//通过对象获取
JsUpdate(dbTable, data) {
try{
var sql = ''
var condition = []
Object.entries(data).forEach(item => {
if (item[1] != undefined && item[0] != 'id') {
if (typeof(item[1] == 'string')) {
condition.push(` ${item[0]} = '${item[1]}' `)
} else {
condition.push(` ${item[0]} = ${item[1]} `)
}
}
})
condition = condition.join(',')
sql = `UPDATE ${dbTable} SET ${condition} where id = ${data.id}`
return this.SqlExecute(sql)
}catch(e){
console.log(e)
//TODO handle the exception
}
},
JsDelete(dbTable,data){
var sql = '';
var condition = [];
try{
if (data.constructor == Number) {
sql = `DELETE FROM ${dbTable} where id = ${data}`
} else {
Object.entries(data).forEach(item => {
if (item[1] != undefined && item[0] != 'id') {
if (typeof(item[1] == 'string')) {
condition.push(` ${item[0]} = '${item[1]}' `)
} else {
condition.push(` ${item[0]} = ${item[1]} `)
}
}
})
condition = condition.join('AND')
sql = `Delete FROM ${dbTable} WHERE ${condition}`
}
return this.SqlExecute(sql);
}catch(e){
console.log(e)
}
}
}