在HTML5中,大大丰富了客户端本地可以存储的内容,添加了很多功能将原本必须要保存在服务器上的数据转为保存在客户端本地,从而大大提高了web应用程序额的性能,减轻了服务器端的负担,使web时代重新回到了“客户端为重,服务器端为轻”的时代。

在这其中,一项非常重要的功能就是对于数据库的本地存储功能。在HTML4中,数据库只能放在服务器端,只能通过服务器来访问数据库,但是在HTML5中,可以像访问本地文件那样轻松的对内置数据库进行直接访问。在HTML5中内置了两种本地数据库:SQLLite,可以通过SQL语言来访问的文件型SQL数据库;indexedDB,NoSQL类型的数据库。

Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范。它通过一套API来操纵客户端的数据库。Safari、Chrome、Firefox、Opera等主流浏览器都已经支持Web SQL Database。HTML5的Web SQL Databases的确很诱惑人,当你发现可以用与mysql查询一样的查询语句来操作本地数据库时,你会发现这东西挺有趣的。

SQLLite的使用:

先介绍三个核心方法

1、openDatabase:这个方法使用现有数据库或创建新数据库创建数据库对象。

2、transaction:这个方法允许我们根据情况控制事务提交或回滚。

3、executeSql:这个方法用于执行真实的SQL查询。

这三个方法的具体使用方法:

(1)openDatabase方法打开一个已经存在的数据库,如果数据库不存在,它还可以创建数据库。几个参数意义分别是:

  • 1,数据库名称。
  • 2,数据库的版本号,目前来说传个1.0就可以了,当然可以不填;
  • 3,对数据库的描述。
  • 4,设置分配的数据库的大小(单位是kb)。
  • 5,回调函数(可省略)。初次调用时创建数据库,以后就是建立连接了。

(2)db.transaction方法可以设置一个回调函数,此函数可以接受一个参数就是我们开启的事务的对象。然后通过此对象可以进行执行Sql脚本,跟下面的步骤可以结合起来。

(3)通过executeSql方法执行查询。

ts.executeSql(sqlQuery,[value1,value2..],dataHandler,errorHandler)

参数说明:

  • qlQuery:需要具体执行的sql语句,可以是create、select、update、delete;
  • value1,value2..]:sql语句中所有使用到的参数的数组,在executeSql方法中,将s>语句中所要使用的参数先用“?”代替,然后依次将这些参数组成数组放在第二个参数中
  • ataHandler:执行成功是调用的回调函数,通过该函数可以获得查询结果集;
  • 4,errorHandler:执行失败时调用的回调函数;

初次调用时创建数据库,以后就是建立连接了。创建的数据库就存在本地,路径如下:
C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\databases\http_localhost_4987 。
创建的是一个sqllite数据库,可以用SQLiteSpy打开文件,可以看到里面的数据。SQLiteSpy是一个绿色软件,可以百度一下下载地址或SQLiteSpy官方下载;

下面将一一将介绍怎样创建打开数据库,创建表,添加数据,更新数据,删除数据,删除表 。

第一步:打开连接并创建数据库

var dataBase = openDatabase("student", "1.0", "学生表", 1024 * 1024, function () { });
if (!dataBase) {
alert("数据库创建失败!");
} else {
alert("数据库创建成功!");
}

第二步:创建数据表

this.createTable=function() {
dataBase.transaction( function(tx) {
tx.executeSql(
"create table if not exists stu (id REAL UNIQUE, name TEXT)",
[],
function(tx,result){ alert('创建stu表成功'); },
function(tx, error){ alert('创建stu表失败:' + error.message);
});
});
}

解释一下,
executeSql函数有四个参数,其意义分别是:
1)表示查询的字符串,使用的SQL语言是SQLite 3.6.19。
2)插入到查询中问号所在处的字符串数据。
3)成功时执行的回调函数。返回两个参数:tx和执行的结果。
4)一个失败时执行的回调函数。返回两个参数:tx和失败的错误信息。

第三步:执行增删改查

1)添加数据:

this.insert = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"insert into stu (id, name) values(?, ?)",
[id, '徐明祥'],
function () { alert('添加数据成功'); },
function (tx, error) { alert('添加数据失败: ' + error.message);
} );
});

2)查询数据:

this.query = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"select * from stu", [],
function (tx, result) { //执行成功的回调函数
//在这里对result 做你想要做的事情吧...........
},
function (tx, error) {
alert('查询失败: ' + error.message);
} );
});
}

解释一下
上面代码中执行成功的回调函数有一参数result。

result:查询出来的数据集。其数据类型为 SQLResultSet ,就如同C#中的DataTable。
SQLResultSet 的定义为:

interface SQLResultSet {
readonly attribute long insertId;
readonly attribute long rowsAffected;
readonly attribute SQLResultSetRowList rows;
};

其中最重要的属性—SQLResultSetRowList 类型的 rows 是数据集的“行” 。
rows 有两个属性:length、item 。
故,获取查询结果的某一行某一列的值 :result.rows[i].item[fieldname]  。

3)更新数据

this.update = function (id, name) {
dataBase.transaction(function (tx) {
tx.executeSql(
"update stu set name = ? where id= ?",
[name, id],
function (tx, result) {
},
function (tx, error) {
alert('更新失败: ' + error.message);
});
});
}

4)删除数据

this.del = function (id) {
dataBase.transaction(function (tx) {
tx.executeSql(
"delete from stu where id= ?",
[id],
function (tx, result) {
},
function (tx, error) {
alert('删除失败: ' + error.message);
});
});
}

5)删除数据表

this.dropTable = function () {
dataBase.transaction(function (tx) {
tx.executeSql('drop table stu');
});
}

(九)HTML5本地存储——本地数据库SQLLite的使用相关推荐

  1. 浏览器缓存原理以及本地存储

    作为一名前端工作人员,前端的缓存知识是必须掌握的,因为一个网站打开网页的速度直接关系到用户体验,用户粘度,而提高网页的打开速度有很多方面需要优化,其中比较重要的一点就是利用好缓存,缓存文件可以重复利用 ...

  2. JavaScript之本地存储

    文章目录 前言 本地存储 本地存储特性 一.目标 二.主要学习内容 1. window.sessionStorage 1.1 sessionStorage的特性 1.2 sessionStorage的 ...

  3. 本地存储与云存储方案价值对比—Vecloud

    越来越多的人认为,对于许多公司而言,云具有商业意义.实际上,据<福布斯>估计,到今年年底,全球83%的企业将以某种方式使用云技术. 但这并不一定意味着将基础架构大规模迁移到云将最适合您的业 ...

  4. 本地存储-cookie|localStorage|sessionStorage|indexedDB

    本地存储 本地存储 cookie 如何工作 问题 cookie标准限制 属性 expires|max-age domain&path secure HttpOnly 设置cookie 服务端设 ...

  5. Web存储—本地存储Cookie

    一.Cookie存储 存在时间最久的本地存储,这种存储方式不完全脱离网络,前后台进行交互时还是需要网络 存储大小:4kb 有效期:在有效期内数据可被访问过了有效期数据消失 本地存储--本地缓存-存储在 ...

  6. APIS(BOM)——Window对象、本地存储

    Window对象 BOM Window对象 定时器-延时函数 js执行机制 同步任务 异步任务 执行机制 location对象 navigator 对象 histroy 对象 本地存储 本地存储分类 ...

  7. 小程序获取本地存储数据,然后传参的时候是上次请求的id

    本地存储 // 本地存储wx.setStorage({key: "city",data: id}) 获取本地存储id wx.getStorage('city') //异步一样可以获 ...

  8. 实现搜索历史的记录 (记录到本地存储中)

    什么是本地存储: 把数据存储到电脑本地(电脑的某个文件里面 ) 通过浏览器来存储的 有哪些本地存储的方式 : localStorage sessionStorage localStorage 永久存储 ...

  9. 【JS缓存技术】-本地存储

    JS缓存技术-本地存储 本地存储 window.sessionStorage window.localStorage 记住用户名案例 本地存储 window.sessionStorage 用法示例: ...

最新文章

  1. Java常用API例子_Java常用API及Math类
  2. WordPress PHP Fatal Error “Maximum execution time of 30 seconds exceeded” 的解决办法
  3. HDU 3572 Task Schedule
  4. 数据结构期末复习之插入排序
  5. 嵌入式linux寄存器位运算,嵌入式linux C语言(一)――位运算的使用
  6. SpringBoot学习之文件结构和配置文件
  7. 车轮轨迹原理_倒车轮子原理是什么 倒车原理动画演示很有用
  8. 机载 LiDAR 点云数据分类
  9. 线性代数 | (4) n维向量
  10. DOS命令的英文全称
  11. SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelecto
  12. 即将前往下一个饭局,你的牙还好吗?丨钛空舱爆款春节特献
  13. HTTP headers(HTTP头)
  14. 火影忍者手游服务器维护多久,火影忍者手游12月26月维护更新公告 全新职业等级剧情上线...
  15. android开发-验证邮箱输入是否合法
  16. c语言贪吃蛇大作业报告,C语言贪吃蛇实验报告
  17. CsPb(Cl/Br)3钙钛矿量子点CsPb(Cl/Br)3 QDs发射波长410-515nm
  18. 教你免卷下载百度文库的文档!!!
  19. iOS开发——短信验证码
  20. python解析pdf文件

热门文章

  1. 使用EventViewer记录VSTO add-in启动错误
  2. .NET开源社区存在的问题
  3. Android studio2.3.1 更新以后Error:Failed to open zip file. Gradle's dependency cache may be corrupt
  4. Android 应用程序消息处理机制(Looper、Handler)分析
  5. 随机验证码。 * 随机生成十组六位字符组成的验证码。 * 验证码由大小写字母、数字字符组成。
  6. 浅析在公众号中使用弛声sdk为什么上传解析慢
  7. Flutter:Navigator2.0介绍及使用
  8. [SDOI2009]学校食堂(状态压缩)
  9. react 倒计时 countDown
  10. 实验二 网络嗅探与欺骗