uniapp 原生sqlite本地数据库管理 Ba-Sqlite

Posted 三杯五岳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uniapp 原生sqlite本地数据库管理 Ba-Sqlite相关的知识,希望对你有一定的参考价值。

简介(下载地址

Ba-Sqlite 是一款原生sqlite数据库管理插件。支持创建表、删除表;增、删、改、查;事务控制;分页查询;批量删、改、查等等。

  • 支持多个数据库切换
  • 支持创建表、删除表
  • 支持增、删、改、查
  • 支持事务
  • 支持批量修改
  • 支持分页查询
  • 支持条件排序
  • 支持自定义条件,批量删、改、查
  • 支持查询当前表结构
  • 支持执行自定义sql
  • 支持返回数据总数(列表)

效果展示

使用方法

引入组件

script 中引入组件

	const sqlite = uni.requireNativePlugin('Ba-Sqlite')

调用示例

script 中调用

		data() 
			return 
				dbName: 'ba-db.db',
				tableName: 'user',
				columnNames: "[name: '_id',type: 'int',isId: true,desc:'主键id', name: 'name',type: 'text',desc:'姓名',notNull:true, name: 'sex',type: 'int',desc:'性别1:男 2:女 0:未知', name: 'hobby',type: 'text',desc:'爱好']",
				values: "[_id: 1,name: '张三',sex: '1', _id: 2,name: '李四',sex: '2']",
				deleteIdKey: '_id',
				deleteId: '1',
				updateQueryKey: 'sex = ?',
				updateQueryValue: "['2']",
				updateContent: "hobby: '逛街'",
				pageNum: 1,
				pageSize: 10,
				orderKey: "sex",
				orderType: "desc",
				dataResult: ""
			
		,
		methods: 
			openOrCreate()  //打开或创建数据库(也可以用来切换多个数据库)
				sqlite.openOrCreate(
						'dbName': this.dbName,
					,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			isHasDb()  //查询某个数据库是否存在
				sqlite.isHasDb(
						'dbName': this.dbName,
					,
					(res) => 
						console.log(res);
						let msg = res.msg;
						if (res.ok) 
							msg = res.isHasDb ? "存在" : "不存在";
						
						uni.showToast(
							title: msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			createTable()  //创建表
				sqlite.createTable(
						'tableName': this.tableName,
						'columnNames': this.columnNames,
					,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			deleteTable()  //删除表
				sqlite.deleteTable(
						'tableName': this.tableName,
					,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			isHasTable()  //查询某个表是否存在
				sqlite.isHasTable(
						'tableName': this.tableName,
					,
					(res) => 
						console.log(res);
						let msg = res.msg;
						if (res.ok) 
							msg = res.isHasTable ? "存在" : "不存在";
						
						uni.showToast(
							title: msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			getTables()  //获取数据库所有表
				sqlite.getTables(,
					(res) => 
						console.log(res);

						this.dataResult = res.ok ? JSON.stringify(res) : '';

						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			insert()  //插入数据
				sqlite.insert(
						'tableName': this.tableName,
						'values': this.values,
					,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			replace()  //更新数据
				sqlite.replace(
						'tableName': this.tableName,
						'values': this.values,
					,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			update()  //批量修改数据
				sqlite.update(
						'tableName': this.tableName,
						'tableName': this.tableName,
						'selection': this.updateQueryKey,
						'selectionArgs': this.updateQueryValue,
						'values': this.updateContent,
					,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			deleteData()  //删除数据
				sqlite.delete(
						'tableName': this.tableName,
						'idKey': this.deleteIdKey,
						'idValue': this.deleteId,
					,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			clearData()  //清空数据
				sqlite.clear(
						'tableName': this.tableName,
					,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			query()  //查询数据
				let orderBy;
				if (this.orderKey && this.orderType) 
					orderBy = this.orderKey + " " + this.orderType;
				
				sqlite.query(
						'tableName': this.tableName,
						'orderBy': orderBy,
					,
					(res) => 
						console.log(res);
						this.dataResult = res.ok ? JSON.stringify(res) : '';

						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			queryPage()  //分页查询
				let orderBy;
				if (this.orderKey && this.orderType) 
					orderBy = this.orderKey + " " + this.orderType;
				
				sqlite.queryPage(
						'tableName': this.tableName,
						'pageNum': this.pageNum,
						'pageSize': this.pageSize,
						'orderBy': orderBy,
					,
					(res) => 
						console.log(res);

						this.dataResult = res.ok ? JSON.stringify(res) : '';

						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
			closeDb()  //关闭数据库
				sqlite.closeDb(,
					(res) => 
						console.log(res);
						uni.showToast(
							title: res.msg,
							icon: "none",
							duration: 3000
						)
					);
			,
		

方法清单

名称说明
openOrCreate打开或创建数据库(也可以用来切换多个数据库)
isHasDb查询某个数据库是否存在
createTable创建表
deleteTable删除表
isHasTable查询某个表是否存在
getTables获取数据库所有表
insert插入数据
replace更新数据
update批量修改数据
delete删除数据
clear清空数据
query查询数据
queryPage分页查询
execSQL执行sql语句(无返回)
rawQuery自定义sql语句查询

openOrCreate 方法参数

打开或创建数据库(也可以用来切换多个数据库)

属性名类型默认值说明
dbNameString‘ba-db.db’数据库名称

isHasDb 方法参数

查询某个数据库是否存在

属性名类型默认值说明
dbNameString‘ba-db.db’数据库名称
返回:
"isHasDb":false,"msg":"success","ok":true

createTable 方法参数

创建表

属性名类型默认值说明
tableNameString‘’表名
columnNamesArray[]表结构(参考如下)
表结构 columnNames
属性名类型默认值说明
nameString‘’字段名称
typeString‘’字段类型(text、int)
isIdBooleanfalse是否是主键(默认主键’_id’)
isAutoBooleanfalse是否自增(仅主键)
notNullBooleanfalse是否不能为空

deleteTable 方法参数

删除表

属性名类型默认值说明
tableNameString‘’表名

isHasTable 方法参数

查询某个表是否存在

属性名类型默认值说明
tableNameString‘’表名
返回:
"isHasTable":false,"msg":"success","ok":true

insert 方法参数

插入数据

属性名类型默认值说明
tableNameString‘’表名
valuesArray‘’需要插入的数据(json),如 [_id: 1,name: ‘张三’,sex: ‘1’]

replace 方法参数

更新数据

属性名类型默认值说明
tableNameString‘’表名
valuesArray‘’需要更新的数据(json),如 [_id: 1,name: ‘张三’,sex: ‘1’]

update 方法参数

根据条件批量修改数据

属性名类型默认值说明
tableNameString‘’表名
selectionString‘’查询的字段,如 ‘sex = ?’
selectionArgsString[][]查询的字段的值,如 [‘1’]
valuesObject批量更改的数据,如 hobby: ‘逛街’

delete 方法参数

可根据id删除,也可自定义selection条件删除

属性名类型默认值说明
tableNameString‘’表名
idKeyString‘_id’id字段,默认 ‘_id’
idValueStringid的值,如 1
selectionString‘’查询的字段,如 ‘sex = ?’(注意selection有值时,idKey和idValue无效,)
selectionArgsString[][]查询的字段的值,如 [‘1’]

clear 方法参数

清空表

属性名类型默认值说明
dbNameString‘ba-db.db’数据库名称
tableNameString‘’表名

query 方法参数

查询数据

属性名类型默认值说明
dbNameString‘ba-db.db’数据库名称
tableNameString‘’表名
selectionString‘’查询的字段,如 ‘sex = ?’
selectionArgsString[][]查询的字段的值,如 [‘1’]
groupByString‘’对相同的数据进行分组
havingString‘’
orderByString‘’一个或多个列按升序或降序顺序排列数据
limitString‘’限制返回的数据数量

rawQuery 方法参数

自定义sql语句查询

属性名类型默认值说明
sqlString‘’sql语句,如:select * from user

execSQL 方法参数

执行sql语句(无返回)

属性名类型默认值说明
sqlString‘’sql语句,如:UPDATE user SET hobby=‘美食’

系列插件

图片选择插件 Ba-MediaPicker文档

图片编辑插件 Ba-ImageEditor文档

文件选择插件 Ba-FilePicker文档

应用消息通知插件 Ba-Notify文档

应用未读角标插件 Ba-Shortcut-Badge文档

应用开机自启插件 Ba-Autoboot文档

扫码原生插件(毫秒级、支持多码)文档

动态修改状态栏、导航栏背景色、字体颜色插件 Ba-AppBar文档

原生sqlite本地数据库管理 Ba-Sqlite文档

安卓保活插件 Ba-KeepAlive文档

安卓快捷方式(桌面长按app图标) Ba-Shortcut文档

自定义图片水印 Ba-Watermark文档

视频压缩插件 Ba-VideoCompressor文档

动态切换应用图标、名称(如新年、国庆等) Ba-ChangeIcon文档

以上是关于uniapp 原生sqlite本地数据库管理 Ba-Sqlite的主要内容,如果未能解决你的问题,请参考以下文章

uniapp 常用原生插件大全

uniapp 原生Toast弹窗提示(可穿透所有界面) Ba-Toast

uniapp 原生Toast弹窗提示(可穿透所有界面) Ba-Toast

uniapp websocket原生服务(自动重连心跳检测) Ba-Websocket

uniapp使用plus.sqlite实现图片视频缓存到手机本地

uniapp扫码原生插件(Google MLKitzxing;支持同时扫多个码)