序言

该篇文章对于sqlite数据库常用的功能进行讲解,欢迎大家指出问题和发表建议!

模块配置

首先打开项目,在项目的根目录找到 manifest.json 文件,选中坐标的“APP模块配置”,找到 “SQLite(数据库)”选项,在前面打勾,文件会自动保存。配置完成之后便可以使用了。
在这里插入图片描述

打开数据库(openDatabase)

在用sqlite数据库时,需要先判断数据库是否打开,未打开的数据库是不能被访问的,因此在使用sqlite数据库时需要判断是否打开。数据库用完之后需要关闭。
未找到该数据库时,会自动创建。

//判断数据库是否打开
getSqLite() {
	let that = this;
	//检查数据库是否打开 
	var open = that.isOpen("GY_M_PMV3", "_doc/GYPMV3.db");
	if (open) {
		that.getInfo();
	} else {
		//开启数据库 
	        openSqlite("GY_M_PMV3", '_doc/GYPMV3.db').then(res => {
			that.getInfo();
		})
	}
},
isOpen(name, path) {
	var ss = name || 'GY_M_PMV3';
	var qq = path || 'GYPMV3.db';
	//数据库打开了就返回true,否则返回false
	var open = plus.sqlite.isOpenDatabase({
		name: ss,
		path: qq
	})
	return open;
},

打开数据库方法
name为sqlite数据库名,path为数据库保存的相对地址,二者可以自己命名。
保存好的数据库地址在该APP包名文件下。

function openSqlite(name, path) {
	//创建数据库或者打开
	//这plus.sqlite只在手机上运行
	return new Promise((resolve, reject) => {
		plus.sqlite.openDatabase({
			name: name, //数据库名称
			path: path, //数据库地址,uniapp推荐以下划线为开头
			success(e) {
				resolve(e); //成功回调
			},
			fail(e) {
				reject(e); //失败回调
			}
		})
	})
}

创建表(executeSql)

创建表时需要库名,表名和表字段名和字段类型,分别传入创建方法中。(以用户表为例)
ID作为主键,自增。
若该表不存在,则新建,否则将忽略。

executeSql('GY_M_PMV3',
			'create table if not exists m_UserInfo("ID" INTEGER PRIMARY KEY AUTOINCREMENT,\
			"UserName" nvarchar(50),"LoginName" nvarchar(50),\
			"PWD" nvarchar(50), "PWDMD5" nvarchar(50),"TEL" nvarchar(50),"StatusFlag" INT)'
).then(res => {})
//在该数据库里创建表格
//数据库不能存对象,数组
function createOrFindSQL(name, sql) {
	return new Promise((resolve, reject) => {
		//创建表格在executeSql方法里写
		plus.sqlite.executeSql({
			name: name,
			sql: sql,
			success(e) {
				resolve(e);
			},
			fail(e) {
				reject(e);
			}
		})
	})
}

添加

ID主键自增直接赋值null即可,各个参数用隔开,注意数据的类型。

executeSql("GY_M_PMV3",
	"insert into m_UserInfo values(" + null +
	",'" + UserName + "','" +LoginName + "','" +
	PWD + "','" + PWDMD5 + "','" + TEL + "','" +
	StatusFlag + "')").then(Ures => {
	})

注意:该方法同样适用于删除和修改,只需要将传入的sql语句修改为对应的即可。

查询(selectSql)

根据登录名查询该用户的信息。(增删改查和SQL Server中的SQL语句相同。)

selectInformationType("GY_M_PMV3",
		'select * from m_UserInfo where LoginName= "' + _this.name +'" '
).then(selRes => {})
function selectInformationType(name, sql) {
	if (name !== undefined) {
		return new Promise((resolve, reject) => {
			plus.sqlite.selectSql({
				name: name,
				sql: sql,
				success(e) {
					resolve(e);
				},
				fail(e) {
					reject(e);
				}
			})
		})
	} else {
		return new Promise((resolve, reject) => {
			reject("错误查询")
		});
	}
}

关闭数据库(closeDatabase)

数据库用完之后需要关闭,避免资源浪费。关闭数据库的方法如下,使用时和打开一样,关闭时只需要传入数据库名即可。若APP后台时需要使用到数据库,则不要关闭。

function closeSQL(name) {
	return new Promise((resolve, reject) => {
		plus.sqlite.closeDatabase({
			name: name,
			success(e) {
				resolve(e);
			},
			fail(e) {
				reject(e);
			}
		})
	})
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐