h5 sqlite 操作封装

参考文档
错误码

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
	})
}
相关推荐
www_pp_8 分钟前
# 构建词汇表:自然语言处理中的关键步骤
前端·javascript·自然语言处理·easyui
YuShiYue27 分钟前
pnpm monoreop 打包时 node_modules 内部包 typescript 不能推导出类型报错
javascript·vue.js·typescript·pnpm
天天扭码42 分钟前
总所周知,JavaScript中有很多函数定义方式,如何“因地制宜”?(ˉ﹃ˉ)
前端·javascript·面试
一个专注写代码的程序媛1 小时前
为什么vue的key值,不用index?
前端·javascript·vue.js
장숙혜1 小时前
ElementUi的Dropdown下拉菜单的详细介绍及使用
前端·javascript·vue.js
火柴盒zhang1 小时前
websheet之 编辑器
开发语言·前端·javascript·编辑器·spreadsheet·websheet
WKK_1 小时前
uniapp自定义封装tabbar
前端·javascript·小程序·uni-app
莫问alicia1 小时前
react 常用钩子 hooks 总结
前端·javascript·react.js
Mintopia1 小时前
图形学中的数学基础与 JavaScript 实践
前端·javascript·计算机图形学
Mintopia1 小时前
Three.js 制作飘摇的草:从基础到进阶的全流程教学
前端·javascript·three.js