260 lines
5.8 KiB
JavaScript
260 lines
5.8 KiB
JavaScript
|
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)
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|