第9讲数据库WebSQL-课件.ppt

上传人(卖家):三亚风情 文档编号:3526408 上传时间:2022-09-11 格式:PPT 页数:107 大小:1.67MB
下载 相关 举报
第9讲数据库WebSQL-课件.ppt_第1页
第1页 / 共107页
第9讲数据库WebSQL-课件.ppt_第2页
第2页 / 共107页
第9讲数据库WebSQL-课件.ppt_第3页
第3页 / 共107页
第9讲数据库WebSQL-课件.ppt_第4页
第4页 / 共107页
第9讲数据库WebSQL-课件.ppt_第5页
第5页 / 共107页
点击查看更多>>
资源描述

1、第第9讲讲 数据库数据库Web SQL传统传统WebWeb应用程序将大多数据都存储在应用程序将大多数据都存储在WebWeb服务服务器端的数据库中,本地存储的能力很弱。器端的数据库中,本地存储的能力很弱。而频繁地访问数据库服务器获取数据,不但会而频繁地访问数据库服务器获取数据,不但会增加网络流量,而且影响应用程序的效率。增加网络流量,而且影响应用程序的效率。HTML5HTML5的本地存储能力得到了很大的提高,不但的本地存储能力得到了很大的提高,不但可以像传统可以像传统WebWeb应用程序那样将数据存储在文件应用程序那样将数据存储在文件中,而且还支持本地的轻型数据库。中,而且还支持本地的轻型数据库

2、。本章知识点本章知识点1 1 webSQLwebSQL Database API Database API 2 2 IndexedDBIndexedDB 1 webSQL Database API p1 1 判断浏览器是否支持判断浏览器是否支持webSQLwebSQL Database API Database API p2 2 新建数据库新建数据库 p3 3 执行执行SQLSQL语句语句 1 判断浏览器是否支持判断浏览器是否支持webSQL Database API p使用使用windows.windows.openDatabaseopenDatabase属性可以打开本数据库属性可以打开本数

3、据库,并返回连接句柄。如果该句柄为,并返回连接句柄。如果该句柄为nullnull、undefinedundefined则说明不支持使用则说明不支持使用webSQLwebSQL Database API Database API操作本地数操作本地数据库,反之则支持。下面定义一个据库,反之则支持。下面定义一个openDatabaseopenDatabase()()函数,用于打开本地数据库:函数,用于打开本地数据库:function getOpenDatabase()try /如果支持则返回数据库连接句柄 if(!window.openDatabase)return window.openDatab

4、ase;else return undefined;catch(e)return undefined;【例例 9】p在网页中定义一个按钮,单击此按钮时,会检测浏在网页中定义一个按钮,单击此按钮时,会检测浏览器是否支持览器是否支持webSQLwebSQL Database API Database API。定义按钮的代。定义按钮的代码如下:码如下:检测浏览器是否支持检测浏览器是否支持webSQL Database API【例例 9】p单击按钮单击按钮checkcheck将调用将调用check()check()函数。函数。check()check()函数的函数的定义代码如下:定义代码如下:func

5、tion check()if(getOpenDatabase()=undefined)alert(您的浏览器不支持您的浏览器不支持webSQL Database API。);else alert(您的浏览器支持您的浏览器支持webSQL Database API。);2 新建数据库新建数据库 pwebSQLwebSQL Database API Database API在中并不包括专门用在中并不包括专门用于创建数据库的于创建数据库的APIAPI,但是以指定的数据库,但是以指定的数据库名为参数调用名为参数调用openDatabaseopenDatabase()()函数时,如果函数时,如果自定的数

6、据库名不存在,则会自动创建它。自定的数据库名不存在,则会自动创建它。p带参数的带参数的openDatabaseopenDatabase()()函数的语法如下:函数的语法如下:数据库连接句柄数据库连接句柄=openDatabase(数据数据库名库名,版本号版本号,数据库显示名称数据库显示名称,估计容量估计容量);【例例 10】p创建数据库创建数据库mydatabasemydatabase的代码如下:的代码如下:function createDB()if(window.openDatabase=undefined)alert(您的浏览器不支持您的浏览器不支持webSQL Database API。

7、);else var dbs=window.openDatabase(mydatabase,v1.0,Save data DB,100);if(dbs)alert(创建成功。创建成功。);else alert(打开数据库失败。打开数据库失败。);3 执行执行SQL语句语句 p使用使用transaction()transaction()函数可以执行函数可以执行SQLSQL语句,语法如语句,语法如下:下:数据库连接句柄数据库连接句柄.transaction(function(tx)tx.executeSql(CREATE TABLE IF NOT EXISTS LOGS(id unique,log

8、););ptransaction()transaction()函数的参数是一个回调函数,使用函数的参数是一个回调函数,使用回调函数的参数回调函数的参数txtx来调用来调用executeSqlexecuteSql()()函数可以执函数可以执行行SQLSQL语句。下面分别介绍几个常用的语句。下面分别介绍几个常用的SQLSQL语句。语句。1创建表语句创建表语句CREATE TABLE p表是数据库中最重要的逻辑对象,是存储数据表是数据库中最重要的逻辑对象,是存储数据的主要对象。在设计数据库结构时,很重要的的主要对象。在设计数据库结构时,很重要的工作就是设计表的结构。关系型数据库的表由工作就是设计表的

9、结构。关系型数据库的表由行和列组成。行和列组成。CREATE TABLE语句用于创建表语句用于创建表 CREATE TABLE IF NOT EXISTS 表名表名(列名列名1数据类型数据类型 字段属性字段属性,列名列名2数据类型数据类型 字段属性字段属性,列名列名n数据类型数据类型 字段属性字段属性)【例例 11】function createTable()if(window.openDatabase=undefined)alert(您的浏览器不支持您的浏览器不支持webSQL Database API。);else var dbs=window.openDatabase(mydatabas

10、e,v1.0,Save data DB,100);if(dbs)dbs.transaction(function(tx)tx.executeSql(CREATE TABLE IF NOT EXISTS t(id UNIQUE,name););else alert(打开数据库失败。打开数据库失败。);DROP TABLE语句语句 p可以使用可以使用DROP TABLEDROP TABLE语句删除表,语法语句删除表,语法如下:如下:DROP TABLE 表名表名p在在WebSQLWebSQL中执行中执行DROP TABLEDROP TABLE语句的方法语句的方法与执行与执行CREATE TABLE

11、CREATE TABLE语句的方法相似。语句的方法相似。2插入数据表语句插入数据表语句INSERT pINSERTINSERT语句用于向表中插入数据,基本语句用于向表中插入数据,基本使用方法如下:使用方法如下:INSERT INTO 表名表名(列名列名1,列名列名2,列名列名n)VALUES(值值1,值值2,值值n)【例例 12】function insert()if(window.openDatabase=undefined)alert(您的浏览器不支持您的浏览器不支持webSQL Database API。);else var dbs=window.openDatabase(mydatab

12、ase,v1.0,Save data DB,100);if(dbs)dbs.transaction(function(tx)tx.executeSql(INSERT INTO t(id,name)VALUES(1,lee););else alert(打开数据库失败。打开数据库失败。);UPDATE语句语句 p可以通过可以通过UPDATEUPDATE语句修改表中的数据。语句修改表中的数据。UPDATEUPDATE语句的基本使用方法如下所示:语句的基本使用方法如下所示:UPDATE 表名表名 SET 列名列名1=值值1,列名列名2=值值2,列名列名n=值值nWHERE 更新条件表达式更新条件表达式

13、DELETE语句语句 DELETE FROM 表名表名WHERE 删除条件删除条件表达式表达式3查询数据表语句查询数据表语句SELECT SELECT子句子句FROM 子句子句 WHERE 子句子句 各子句的主要功能说明如下。各子句的主要功能说明如下。SELECTSELECT子句:指定查询结果集的列组成,列子句:指定查询结果集的列组成,列表中的列可以来自一个或多个表;表中的列可以来自一个或多个表;FROMFROM子句:指定要查询的一个或多个表;子句:指定要查询的一个或多个表;WHEREWHERE子句:指定查询的条件;子句:指定查询的条件;transaction()函数函数 p使用使用trans

14、action()transaction()函数执行函数执行SELECTSELECT语句语句的语法如下:的语法如下:db.transaction(function(t)t.executeSql(SELECT语句语句,function(t,r),function(t,e);t.executeSql()函数有函数有4个参数个参数 p第一个参数是要执行的第一个参数是要执行的SELECTSELECT语句;语句;p第第2 2个参数是要传递的参数,比如查询条个参数是要传递的参数,比如查询条件,如果没有参数,则使用件,如果没有参数,则使用;p第第3 3个参数是处理查询结果集的回调函数个参数是处理查询结果集的回

15、调函数,参数,参数r r为结果集;为结果集;p第第4 4个参数是处理错误的回调函数,参数个参数是处理错误的回调函数,参数e e为错误对象。为错误对象。【例例 13】function select()if(window.openDatabase=undefined)alert(您的浏览器不支持您的浏览器不支持webSQL Database API。);elsevar dbs=window.openDatabase(mydatabase,v1.0,Save data DB,100);if(dbs)dbs.transaction(function(tx)tx.executeSql(SELECT*FR

16、OM t,function(tx,results)alert(results.rows.length);if(results&results.rows&0 results.rows.length)var text=;接上接上for(var i=0;i results.rows.length;i+)text+=results.rows.item(i).id+results.rows.item(i).name+;document.getElementById(result).innerHTML=text;,null););else alert(打开数据库失败。打开数据库失败。);定义一个定义一个“

17、查询表查询表t”按钮按钮 查询表查询表t定义一个定义一个标签,用于显示查询结果标签,用于显示查询结果 显示表显示表t的内容的内容 总结总结p我们在数据库中处理大量结构化数据,我们在数据库中处理大量结构化数据,html5html5引入引入Web SQL DatabaseWeb SQL Database概念。概念。p它使用它使用 SQL SQL 来操纵客户端数据库的来操纵客户端数据库的 API API,这些,这些 API API 是异步的,规范中使用的方是异步的,规范中使用的方言是言是SQLliteSQLlite。p悲剧正是产生于此,悲剧正是产生于此,Web SQL DatabaseWeb SQL

18、 Database规范页面有着这样的声明。规范页面有着这样的声明。p翻译一下:翻译一下:Web SQL DatabaseWeb SQL Database曾经在曾经在W3CW3C推荐规范上推荐规范上,但规范工作已经停止了。,但规范工作已经停止了。p目前已经陷入了一个僵局:目前的所有实现都是基目前已经陷入了一个僵局:目前的所有实现都是基于同一个于同一个SQLSQL后端(后端(SQLiteSQLite),但是我们需要更多的),但是我们需要更多的独立实现来完成标准化。独立实现来完成标准化。p也就是说这是一个废弃的标准了,虽然部分浏览器也就是说这是一个废弃的标准了,虽然部分浏览器已经实现,但。已经实现,

19、但。p但是我们学一下也没什么坏处,而且能和现但是我们学一下也没什么坏处,而且能和现在在W3CW3C力推的力推的IndexedDBIndexedDB做比较。做比较。p不过不过ChromeChrome的控制台真心好用啊,神马的控制台真心好用啊,神马cookiecookie、Local StorageLocal Storage、Session StorageSession Storage、Web SQLWeb SQL、IndexedDBIndexedDB、Application CacheApplication Cache等等html5html5新增内容看的一清二楚,免去了很多新增内容看的一清二楚,

20、免去了很多调试代码工作。调试代码工作。pWeb SQL DatabaseWeb SQL Database实际上已经被废弃,而实际上已经被废弃,而HTML5HTML5的支持的本地存储实际上变成了的支持的本地存储实际上变成了Web StorageWeb Storage(Local StorageLocal Storage和和Session StorageSession Storage)与)与IndexedDBIndexedDB。pWeb StorageWeb Storage使用简单字符串键值对在本地存储使用简单字符串键值对在本地存储数据,方便灵活,但是对于大量结构化数据存数据,方便灵活,但是对于大

21、量结构化数据存储力不从心。储力不从心。pIndexedDBIndexedDB是为了能够在客户端存储大量的结构是为了能够在客户端存储大量的结构化数据,并且使用索引高效检索的化数据,并且使用索引高效检索的APIAPI。2 IndexedDB p1 1 数据库的相关概念数据库的相关概念 p2 2 判断浏览器是否支持判断浏览器是否支持IndexedDBIndexedDB p3 3 创建和打开数据库创建和打开数据库 p4 4 创建对象存储空间创建对象存储空间ObjectStoreObjectStore p5 5 创建索引创建索引 p6 6 事务事务 p7 7 游标游标 1 数据库的相关概念数据库的相关概

22、念 p1 1数据库数据库 p2 2数据库管理系统数据库管理系统 p3 3数据库系统数据库系统 p4 4NoSQLNoSQL数据库数据库 1数据库数据库 p数据库(数据库(DatabaseDatabase,DBDB),简单地讲就),简单地讲就是存放数据的仓库。不过,数据库不是是存放数据的仓库。不过,数据库不是数据的简单堆积,而是以一定的方式保数据的简单堆积,而是以一定的方式保存在计算机存储设备上的相互关联的数存在计算机存储设备上的相互关联的数据的集合。也就是说,数据库中的数据据的集合。也就是说,数据库中的数据并不是相互孤立的,数据和数据之间是并不是相互孤立的,数据和数据之间是有关联的。有关联的。

23、2数据库管理系统数据库管理系统 p数据库管理系统(数据库管理系统(Database Management Database Management SystemSystem,DBMSDBMS)是一种系统软件,介于)是一种系统软件,介于应用程序和操作系统之间,用于帮助我应用程序和操作系统之间,用于帮助我们管理输入到计算机中的大量数据。如们管理输入到计算机中的大量数据。如用于创建数据库,向数据库中存储数据用于创建数据库,向数据库中存储数据,修改数据库中的数据,从数据库中提,修改数据库中的数据,从数据库中提取信息等。取信息等。一个数据库管理系统应具备如下功能一个数据库管理系统应具备如下功能 p(1 1

24、)数据定义功能。可以定义数据库的结构,定义数)数据定义功能。可以定义数据库的结构,定义数据库中数据之间的联系,定义对数据库中数据的各种据库中数据之间的联系,定义对数据库中数据的各种约束等。约束等。p(2 2)数据操纵功能:可以实现对数据库中数据的添加)数据操纵功能:可以实现对数据库中数据的添加、删除、修改,可以对数据库进行备份和恢复等。、删除、修改,可以对数据库进行备份和恢复等。p(3 3)数据查询功能:可以以各种方式提供灵活的查询)数据查询功能:可以以各种方式提供灵活的查询功能,使用户可以方便地使用数据库中的数据。功能,使用户可以方便地使用数据库中的数据。p(4 4)数据控制功能:可以完成对

25、数据库中数据的安全)数据控制功能:可以完成对数据库中数据的安全性控制、完整性控制、多用户环境下的并发控制等多性控制、完整性控制、多用户环境下的并发控制等多方面的控制。方面的控制。p(5 5)数据库通信功能:在分布式数据库或提供网络操)数据库通信功能:在分布式数据库或提供网络操作功能的数据库中还必须提供数据库的通信功能。作功能的数据库中还必须提供数据库的通信功能。数据库管理系统在计算机系统中的地位数据库管理系统在计算机系统中的地位 硬件 操 系 统 作 D B M S 应 用 开 发 工 具 应 用 系 统 3数据库系统数据库系统 p数据库系统(数据库系统(Database SystemData

26、base System,DBSDBS)是指在计算机系统中引入数据库的系统是指在计算机系统中引入数据库的系统,除了相关的硬件之外,数据库系统还,除了相关的硬件之外,数据库系统还包括数据库、数据库管理系统、应用系包括数据库、数据库管理系统、应用系统、数据库管理员和用户。统、数据库管理员和用户。p可以看出,数据库、数据库管理系统和可以看出,数据库、数据库管理系统和数据库系统是数据库系统是3 3个不同的概念,数据库强个不同的概念,数据库强调的是数据,数据库管理系统是系统软调的是数据,数据库管理系统是系统软件,而数据库系统强调的是系统。件,而数据库系统强调的是系统。4NoSQL数据库数据库 pNoSQL

27、NoSQL是新一代的数据库,是新一代的数据库,NoSQLNoSQL有有non-relationalnon-relational和和Not Only SQLNot Only SQL的意思,具有非关系型、高效、分的意思,具有非关系型、高效、分布式、开放源代码等特点。对于已经熟悉布式、开放源代码等特点。对于已经熟悉SQL SQL ServerServer等关系型数据库的读者而言,接受等关系型数据库的读者而言,接受NoSQLNoSQL数据数据库还需要有一个过程。库还需要有一个过程。Nam为什么要提出为什么要提出NoSQL的概念呢?的概念呢?p因为传统的关系数据库在应付因为传统的关系数据库在应付web2

28、.0web2.0网站,特别是超大网站,特别是超大规模和高并发的规模和高并发的SNSSNS类型(社交网络)的类型(社交网络)的web2.0web2.0纯动态网纯动态网站已经显得力不从心,暴露了很多难以克服的问题。站已经显得力不从心,暴露了很多难以克服的问题。p例如,对数据库高并发读写的需求、对海量数据的高效例如,对数据库高并发读写的需求、对海量数据的高效率存储和访问的需求、对数据库的高可扩展性和高可用率存储和访问的需求、对数据库的高可扩展性和高可用性的需求等。性的需求等。p所以,关系数据库在很多情况下显得不太合适了。所以,关系数据库在很多情况下显得不太合适了。NoSQLNoSQL 是非关系型数据

29、存储的广义定义,它打破了关系型数据是非关系型数据存储的广义定义,它打破了关系型数据库的垄断局面。库的垄断局面。NoSQLNoSQL 数据存储不需要固定的表结构,数据存储不需要固定的表结构,通常也不存在连接操作。通常也不存在连接操作。p在大数据存取上具备关系型数据库无法比拟的性能优势在大数据存取上具备关系型数据库无法比拟的性能优势。NoSQLNoSQL的概念在的概念在 20092009年初得到了广泛认同。年初得到了广泛认同。2 判断浏览器是否支持判断浏览器是否支持IndexedDB p使用使用window.indexedDBwindow.indexedDB属性可以判断浏览器是否支属性可以判断浏览

30、器是否支持持IndexedDBIndexedDB数据库。数据库。p当前,当前,IndexedDBIndexedDB的规范尚未最终定稿,不同的浏览的规范尚未最终定稿,不同的浏览器厂商还是使用浏览器前缀实现器厂商还是使用浏览器前缀实现IndexedDBIndexedDB API API。基。基于于GeckoGecko内核的浏览器使用内核的浏览器使用mozmoz前缀,基于前缀,基于WebKitWebKit内内核的浏览器使用核的浏览器使用webkitwebkit前缀。前缀。p如果还希望使用如果还希望使用window.indexedDBwindow.indexedDB来判断浏览器是来判断浏览器是否支持否

31、支持IndexedDBIndexedDB数据库,则可以做下面的处理:数据库,则可以做下面的处理:window.indexedDB=window.indexedDB|window.mozIndexedDB|window.webkitIndexedDB【例例 14】p在网页中定义一个按钮,单击此按钮时在网页中定义一个按钮,单击此按钮时,会检测浏览器是否支持,会检测浏览器是否支持IndexedDBIndexedDB数据数据库。定义按钮的代码如下:库。定义按钮的代码如下:检测浏览器是否支持检测浏览器是否支持IndexedDB数据库数据库check()函数函数 function check()windo

32、w.indexedDB=window.indexedDB|window.mozIndexedDB|window.webkitIndexedDB if(window.indexedDB)alert(您的浏览器支持您的浏览器支持IndexedDB数据库。数据库。);else alert(您的浏览器不支持您的浏览器不支持IndexedDB数据库。数据库。);3 创建和打开数据库创建和打开数据库 p window.indexedDBwindow.indexedDB对象只有一个对象只有一个openopen方法,用于方法,用于打开指定的数据库,语法如下:打开指定的数据库,语法如下:request对象对象=

33、window.indexedDB.open(数据库名数据库名,数据库版本号数据库版本号)p 如果指定的数据库名存在,则打开它;否则创建如果指定的数据库名存在,则打开它;否则创建数据库。数据库。requestrequest对象用于处理用户对数据库的操对象用于处理用户对数据库的操作请求。可以通过它定义操作成功和失败的处理作请求。可以通过它定义操作成功和失败的处理函数。函数。request.onerror p通过通过request.onerrorrequest.onerror可以指定操作失败的可以指定操作失败的处理函数,方法如下:处理函数,方法如下:request.onerror=function(

34、event)/错误处理错误处理;p可以通过可以通过event.target.errorCodeevent.target.errorCode获取错获取错误号。误号。提示提示 p浏览器通常不希望恶意网站随意使用浏览器通常不希望恶意网站随意使用IndexedDBIndexedDB数据库来存储数据,因此当数据库来存储数据,因此当WebWeb应应用程序第一次使用用程序第一次使用IndexedDBIndexedDB数据库时会询问数据库时会询问用户是否允许访问。用户是否允许访问。p而且多数浏览器在隐私模式下不允许使用而且多数浏览器在隐私模式下不允许使用IndexedDBIndexedDB数据库。数据库。re

35、quest.onsuccess p通过通过request.onsuccessrequest.onsuccess可以指定操作成功的可以指定操作成功的处理函数,方法如下:处理函数,方法如下:request.onerror=function(event)/成功处理成功处理;prequest.resultrequest.result是执行指定操作的结果,例如是执行指定操作的结果,例如,执行打开数据库的操作后,通过,执行打开数据库的操作后,通过request.resultrequest.result可以获得打开数据库的实例。可以获得打开数据库的实例。通过数据库实例可以访问数据库。通过数据库实例可以访问数

36、据库。创建创建IndexedDB数据库数据库MyTestDatabase var db;var request=indexedDB.open(MyTestDatabase);request.onerror=function(event)alert(错误号:错误号:+event.target.errorCode);request.onsuccess=function(event)db=request.result;4 创建对象存储空间创建对象存储空间ObjectStore pIndexedDBIndexedDB不是关系型数据库,它使用对象存储空间不是关系型数据库,它使用对象存储空间(Object

37、StoreObjectStore)来存储数据。一个数据库中可以包)来存储数据。一个数据库中可以包含多个对象存储空间,对象存储空间使用键值对的含多个对象存储空间,对象存储空间使用键值对的形式来存储数据,即每个数据都由一组键和一组值形式来存储数据,即每个数据都由一组键和一组值组成键类似关系型数据库中表的字段。例如下面的组成键类似关系型数据库中表的字段。例如下面的代码表示一条员工数据:代码表示一条员工数据:id:110,name:李明李明,age:35,email: IndexedDB数据库提供键的选项数据库提供键的选项 key Path选项选项key Generator选项选项具体描述具体描述否否

38、否否这种对象存储空间可存储任意类型的值。当保存这种对象存储空间可存储任意类型的值。当保存新值时,必须提供一个单独的键新值时,必须提供一个单独的键是是否否这种对象存储空间只能存储这种对象存储空间只能存储JavaScript对象。而且对象。而且JavaScript对象必须具有一个与对象必须具有一个与key Path同名的同名的属性属性否否是是这种对象存储空间可存储任意类型的值。当保存这种对象存储空间可存储任意类型的值。当保存新值时,可以自动生成键;如果需要指定特定新值时,可以自动生成键;如果需要指定特定的键,也可以提供一个单独的键的键,也可以提供一个单独的键是是是是这种对象存储空间只能存储这种对象

39、存储空间只能存储JavaScript对象。而且对象。而且JavaScript对象必须具有一个与对象必须具有一个与key Path同名的同名的属性。当保存新值时,可以自动生成键。生成属性。当保存新值时,可以自动生成键。生成的键被保存在的键被保存在JavaScript对象的与对象的与key Path同名同名的属性中;如果与的属性中;如果与key Path同名的属性已经有同名的属性已经有值值1,则会将其作为键,不会再生成新键,则会将其作为键,不会再生成新键createObjectStore()方法方法 p使用数据库实例对象的使用数据库实例对象的createObjectStorecreateObjec

40、tStore()()方法可以创方法可以创建对象存储空间,方法如下:建对象存储空间,方法如下:pObjectStoreObjectStore对象对象 =数据库实例对象数据库实例对象.createObjectStorecreateObjectStore(对象存储空间名对象存储空间名,提供键的选项提供键的选项)p例如,创建一个对象存储空间例如,创建一个对象存储空间employeesemployees,指定,指定keyPathkeyPath选项为选项为idid(即主键为(即主键为idid),代码如下:),代码如下:var objectStore=db.createObjectStore(employe

41、es,keyPath:id)createObjectStore()方法方法 p数据库实例对象数据库实例对象.objectStoreNamesobjectStoreNames中包含数据库中所有中包含数据库中所有的对象存储空间名称,在创建对象存储空间之前,可以的对象存储空间名称,在创建对象存储空间之前,可以使用使用objectStoreNames.ContainsobjectStoreNames.Contains()()方法判断对象存储方法判断对象存储空间名称是否已经存在,例如:空间名称是否已经存在,例如:if(!db.objectStoreNames.contains(employees)var

42、 objectStore=db.createObjectStore(employees,keyPath:id);onupgradeneeded事件事件 通常在通常在onupgradeneededonupgradeneeded事件的处理函事件的处理函数中执行改变数据库结构的操作(包括创建数中执行改变数据库结构的操作(包括创建对象存储空间)。对象存储空间)。onupgradeneededonupgradeneeded事件在事件在下列情况下被触发:下列情况下被触发:数据库第一次被打开时;数据库第一次被打开时;打开数据库时指定的版本号高于当前被持打开数据库时指定的版本号高于当前被持久化的数据库版本号。

43、久化的数据库版本号。【例例 15】p在在IndexedDBIndexedDB数据库数据库MyTestDatabaseMyTestDatabase中创中创建对象存储空间建对象存储空间employeesemployees。p定义一个定义一个“创建对象存储空间创建对象存储空间”按钮,按钮,代码如下:代码如下:创建创建对象存储空间对象存储空间create()方法方法 var request;function create()request=indexedDB.open(MyTestDatabase1);request.onerror=function(event)alert(错误号:错误号:+even

44、t.target.errorCode);request.onupgradeneeded=function(event)var db=request.result;if(!db.objectStoreNames.contains(employees)var objectStore=db.createObjectStore(employees,keyPath:id);【例例 16】p显示在显示在IndexedDBIndexedDB数据库数据库MyTestDatabaseMyTestDatabase中中包含的对象存储空间信息。包含的对象存储空间信息。p定义一个定义一个“获取对象存储空间信息获取对象存

45、储空间信息”按钮,按钮,代码如下:代码如下:获取获取对象存储空间信息对象存储空间信息getinfo()方法方法 var request;function getinfo()window.indexedDB=window.indexedDB|window.mozIndexedDB|window.webkitIndexedDB if(window.indexedDB)request=window.indexedDB.open(MyTestDatabase1);request.onerror=function(event)alert(错误号:错误号:+event.target.errorCode);

46、request.onsuccess=function(event)var db=request.result;getinfo()方法方法 document.getElementById(info).innerHTML=数据库数据库MyTestDatabase共有共有+db.objectStoreNames.length.toString()+个对象存个对象存储空间储空间;for(var i=0;i db.objectStoreNames.length;i+)document.getElementById(info).innerHTML+=对象存储空间名对象存储空间名:+db.objectSto

47、reNamesi;else alert(您的浏览器不支持您的浏览器不支持IndexedDB数据库。数据库。);div元素元素info p程序从程序从db.objectStoreNamesdb.objectStoreNames数组中获取对数组中获取对象存储空间信息,并将其显示在象存储空间信息,并将其显示在divdiv元素元素infoinfo中。中。pdivdiv元素元素infoinfo的定义代码如下:的定义代码如下:获取对象存储空间信息获取对象存储空间信息 5 创建索引创建索引 p可以通过调用可以通过调用ObjectStoreObjectStore对象对象.createIndexcreateIn

48、dex()()方法在对象存储空间中创建方法在对象存储空间中创建索引,方法如下:索引,方法如下:var 索引对象索引对象=ObjectStore对象对象.createIndex(索引名索引名,创建索引的列(创建索引的列(即即keyPath),索引选项索引选项);例如例如 pObjectStoreObjectStore指向对象存储空间指向对象存储空间employeesemployees,下面的语句可以在对象存储,下面的语句可以在对象存储空间空间employeesemployees的列的列emailemail上创建一个唯上创建一个唯一索引一索引emailemail。objectStore.creat

49、eIndex(email,email,unique:true)【例例 17】var request;function create()request=indexedDB.open(MyTestDatabase);request.onerror=function(event)alert(错误号:错误号:+event.target.errorCode);request.onupgradeneeded=function(event)var db=request.result;if(!db.objectStoreNames.contains(employees)var objectStore=db.c

50、reateObjectStore(employees,keyPath:id);objectStore.createIndex(email,email,unique:true);提示提示 p因为数据库因为数据库MyTestDatabaseMyTestDatabase已经存在,已经存在,为了触发为了触发onupgradeneededonupgradeneeded事件,可以在事件,可以在openopen方法中使用数据库版本号参数。方法中使用数据库版本号参数。6 事务事务 p事务是包含一组数据库操作的逻辑工作事务是包含一组数据库操作的逻辑工作单元。在事务中包含的数据库操作是不单元。在事务中包含的数据库

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第9讲数据库WebSQL-课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|