sqlite的简单使用

sqlite的简单使用,从入门到....自暴自弃..

uniapp sqlite模块用于操作本地数据库文件,可实现数据库文件的创建,执行SQL语句等功能.
注意:HBuilderX1.7.2及以上版本支持此功能。

在此之前需要了解什么是plus?

以plus开头的方法都是属于HTML5+环境调用的方法。

plus不能在浏览器环境下使用,它必须在手机APP上才能使用,因为以安卓为例,他是操纵webview的API。在5+中,我们在使用plus之前要监听HTML5+环境是否已经加载完毕,而在uniapp中,则可以直接调用,可以参看uni-app使用plus注意事项。

什么是webview?

WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面。它使用的内核是webkit引擎,4.4版本之后,直接使用chrome作为内置网页浏览器。它的作用是显示和渲染页面,可与页面JavaScript加护,实现混合开发。

uniapp打包App 端内置 HTML5+ 引擎

sqlite使用

sqlite方法: 参考文档: https://www.html5plus.org/doc/zh_cn/sqlite.html#plus.sqlite.executeSql
openDatabase: 打开数据库
isOpenDatabase: 判断数据库是否打开
closeDatabase: 关闭数据库

transaction: 执行事务

executeSql: 执行增删改等操作的SQL语句
selectSql: 执行查询的SQL语句

方法的前缀 plus.sqlite 表示 plus的sqlite的方法

  1. openDatabase,isOpenDatabase,closeDatabase
//如果数据库存在则打开,不存在则创建。
plus.sqlite.openDatabase({
    name: 'first',  // ( String ) 必选 数据库名称
    path: '_doc/test.db',  // ( String ) 必选 数据库路径
    success: function(e){
    	console.log('openDatabase success!');
    },
    fail: function(e){
    	console.log('openDatabase failed: '+JSON.stringify(e));
    }
});
//数据库已经打开则返回true,数据库没有打开则返回false。 HBuilderX1.9.0及以上版本支持。
plus.sqlite.isOpenDatabase({
    name: 'first',  // ( String ) 必选 数据库名称
    path: '_doc/test.db',  // ( String ) 必选 数据库路径
    success: function(e){
    	console.log('openDatabase success!');
       //返回值 Boolean : true表示数据库已打开,false表示数据库没有打开。
    },
    fail: function(e){
    	console.log('openDatabase failed: '+JSON.stringify(e));
    }
});
//完成数据库操作后,必须关闭数据库,否则可能会导致系统资源无法释放。
plus.sqlite.closeDatabase({
    name: 'first',
    success: function(e){
        console.log('closeDatabase success!');
    },
    fail: function(e){
        console.log('closeDatabase failed: '+JSON.stringify(e));
    }
});

2.transaction

plus.sqlite.transaction({
    name: 'first',
    operation: 'begin', //可选值:begin(开始事务)、commit(提交)、rollback(回滚)。
    success: function(e){
    	console.log('transaction success!');
    },
    fail: function(e){
    	console.log('transaction failed: '+JSON.stringify(e));
    }
});
  1. executeSql,selectSql
plus.sqlite.executeSql({
    name: 'first', //name: ( String ) 必选 数据库名称
    sql: "sql", //sql: ( Array[String] | String ) 必选 需要执行的SQL语句
    //参数为字符串时,表示执行单条SQL语句; 参数为字符串数组时(HBuilderX2.5.5+支持),表示执行多条SQL语句,按数组顺序执行,某条SQL语句执行错误则终止。 注意:Android平台不支持SQL语句中使用“;”分割多条命令,要运行多条命令请使用字符串数组参数。
    success: function(e){
    	console.log('executeSql success!');
    },
    fail: function(e){
    	console.log('executeSql failed: '+JSON.stringify(e));
    }
});

sql 的简单使用语法

创建删除

创建 create table

create table if not exists imglocation(key1,key2,key3) //创建一个imglocation表名的表,有的话链接 没有的话创建 表结构为key1,key2,key3

删除表

DROP TABLE 表名;   //直接删除表结构
增删改查

插入insert

"insert into mixtureinfo (ciid,miid) VALUES('"mixtureList[i].ciid+"','"+mixtureList[i].miid+"')";

insert into 表名(字段key1,字段key2)VALUES (字段key1值,字段key1值)
也可 : insert into 表名 VALUES (字段key1值,字段key1值)
注意 每个值要用引号 引起来

删除表内容 DELETE

DELETE FROM 表名;   //删除表内容 不删除表结构
//后可接 条件语句 删除指定数据
//如:
`DELETE FROM mixtureinfoss where meter_book_id = '${id}'`

修改UPDATE update

var sqlInfo =
   `read_status='2',read_source='2',read_end_code='${this.waterList.read_end_code - 0}',read_waters='${this.sum}',read_adj_waters='0',read_settle_waters='${this.sum}',read_situation='${this.waterList.read_situation}',read_memo='${this.waterList.read_memo}'`
var sql = `UPDATE mixtureinfoss SET ${sqlInfo} WHERE id = '${this.waterList.id}' `

UPDATE 表名 SET 要修改的数据key1=data1 键与值一一对应 //在没有使用条件语句时  修改的是整个表
注意:修改时 一定要加条件语句

查询 select

//所有
select * from mixtureinfo   // 查询 from表名 所有字段
select 返回字段key form 表名 where 查询条件   //返回所有的话 就用


`select * from mixtureinfoss where meter_book_id='${this.fromInfo.data.meter_book_id}' AND read_status in(${read_status}) AND meter_code LIKE '%${this.fromInfo.data.fulltext}%' limit ${ this.fromInfo.pageSize } offset ${ (this.fromInfo.currentPage - 1)*this.fromInfo.pageSize}`

条件语句 where

一般where 后接的是筛选条件,对前面的结果进行筛选 执行顺序按照代码顺序

AND 并且 满足前面条件也满足后面条件    取的是交集
OR  或   满足前面条件或满足后面条件都行 取的是并集
limit  10  offset  0  //从0索引开始 10条数据  limit 返回的条数(number) offset 符合条件的数据的索引(0) 


sql语法参考文档: https://www.runoob.com/w3cnote/sql-syntax-manual.html

SQLite语法参考文档: https://www.runoob.com/sqlite/sqlite-drop-table.html

sql进阶语法参考文档:http://c.biancheng.net/view/7389.html


封装SQLite操作的工具函数

//日志开关
var logFlag = true;
/**
 * 全局的日志方法
 * @param {Object} message
 */
export function logUtils(message) {
	if (logFlag) {
		console.log(message);
	}
}
/**
 * 判断数据库是否打开
 */
function sqliteIsOpen() {
	return plus.sqlite.isOpenDatabase({
		name: 'readmachine',
		path: '_doc/readmachine.db'
	});
}

/**
 * 打开数据库
 */
function openDB() {
	if (!sqliteIsOpen()) {
		plus.sqlite.openDatabase({
			name: 'readmachine',
			path: '_doc/readmachine.db',
			success: function(e) {
				logUtils('openDatabase success! 数据库初始化成功');
			},
			fail: function(e) {
				logUtils('openDatabase failed: ' + JSON.stringify(e));
			}
		})
	}else{
		logUtils('openDatabase! 数据库已初始化');
	}
}

/**
 * 关闭数据库
 */
function colseDB() {
	if (sqliteIsOpen()) {
		plus.sqlite.closeDatabase({
			name: 'readmachine',
			success: function(e) {
				logUtils('closeDatabase success!');
			},
			fail: function(e) {
				logUtils('closeDatabase failed: ' + JSON.stringify(e));
			}
		})
	}
}
//执行数据库
function executeSQL(exsql) {
	if (!sqliteIsOpen()) {
		openDB();
	}
	return new Promise((resolve, reject) => {
		plus.sqlite.executeSql({
			name: 'readmachine',
			sql: exsql,
			success: function(e) {
				resolve("操作成功");
				logUtils('executeSql success!');
				// console.log('executeSql success!');
			},
			fail: function(e) {
				reject(JSON.stringify(e));
			}
		});
	});
}



//查询数据库
function selectSQL(sql) {
	if (!sqliteIsOpen()) {
		openDB()
	};
	return new Promise((resolve, reject) => {
		try {
			plus.sqlite.selectSql({
				name: 'readmachine',
				sql: sql,
				success: function(data) {
					resolve(data);
					logUtils('查询成功:' + data.length + "条");
				},
				fail: function(e) {
					reject(e);
					logUtils('selectSql failed: ' + JSON.stringify(e));
				}
			});
		} catch (e) {
			resolve([e])
		}
	});
}
posted @ 2021-11-11 15:05  xiao旭  阅读(1067)  评论(0编辑  收藏  举报