序言
该篇文章对于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);
}
})
})
}