indexedDB(1)__初识数据库

一、本地存储

Cookie,sessinStorage,localStorage的区别:

indexedDB(1)__初识数据库_第1张图片



二、数据库

分类:

根据存放的数据的结构类型,可以分为:

关系型数据库和非关系型数据库。

 

关系型数据结构:

indexedDB(1)__初识数据库_第2张图片


非关系型数据结构:


indexedDB(1)__初识数据库_第3张图片


同步和异步:

同步,比如两个人通话,必须同时接通之后,才能继续说话。

异步,比如QQ,不用双方同时在线,也可以不停地发送信息,等到另外一方上线了再回复。

编程中常用异步的地方:事件回调,I/O操作。



三、idnexedDB数据库

indexedDB是HTML5引入的一种非关系型数据库,能使得web应用存放更多的数据。(大多浏览器对存储空间的上限是没有要求的。一般初始空间为200M左右,如果需要更多,需要得到用户的允许)。

 

1.全局数据库对象:

HTML5以全局对象indexedDB的形式对该数据库的操作提供API,

 

 

2.发出打开指定数据库的请求:


第一个参数是数据库的名字,如果该数据库不存在,就会自动创建该数据库,并打开。

第二个参数是数据库的版本,

该方法会返回一个请求对象。

请求是异步的,有可能会打开失败,有可能会成功。

用请求对象来监听这两个事件:

indexedDB(1)__初识数据库_第4张图片



注意:

打开数据的版本只能等于或者高于已经存在的版本,如果试图打开低于已经存在的版本,则会打开失败。

indexedDB(1)__初识数据库_第5张图片

如果数据库版本高于现存版本,那么还会依次触发upgrageneeded事件和success事件:也就是先升级,再打开。

indexedDB(1)__初识数据库_第6张图片


请求完成之后,会返回一个事件对象:


indexedDB(1)__初识数据库_第7张图片

注意:

event.target this是等价的。

indexedDB(1)__初识数据库_第8张图片


3.创建数据存储空间:

在数据库中存放数据,不能直接放到数据库中。需要创建数据存储空间objectStore。(好比是存放在仓库中的物品需要用包装盒装起来一样)

 

db.createObjectStore();

 

创建存储空间的代码只能在upgrageneeded的回调函数中进行,否则:


在创建存储空间之前,我们应该判断一下这个名字的空间是否已经存在:


indexedDB(1)__初识数据库_第9张图片

创建存储空间的时候,我们需要指定数据的key。

有两种方式:


1).指定数据对象的某个属性为key



2).自增长,不需要指定key,系统默认以从1开始的数字作为key

indexedDB(1)__初识数据库_第10张图片




4.数据操作(增删查改)


A)添加数据:

objectStore.add(Object);

顺序:

indexedDBà db à transaction àobjectStoreà数据操作

 

B)查询数据:

单个数据查询: objectStore.get(Object);

indexedDB(1)__初识数据库_第11张图片



全部数据查询:游标cursor

indexedDB(1)__初识数据库_第12张图片




OpenCursor( )函数可以传入一个条件对象:

indexedDB(1)__初识数据库_第13张图片

indexedDB(1)__初识数据库_第14张图片


索引查询:


创建索引

indexedDB(1)__初识数据库_第15张图片


索引查询:

indexedDB(1)__初识数据库_第16张图片




C)修改数据

   先查询,后修改。



indexedDB(1)__初识数据库_第17张图片



D)删除数据

1.  删除存储空间中的某一条记录:

    userStore.delete(key);

2.  删除存储空间中的所有记录:

    userStore.clear();

3.  删除数据库中的某个存储空间:

    db.deleteObjectStore(‘user');

4.  删除数据库:

    Window.indexedDB.deleteDatabase(‘mydb’);



5.安全限制:

 

不同域名的网站页面的indexedDB是互相独立的。不能相互访问到。

百度网站下的页面不能操作谷歌网站下的indexedDB数据库。


indexedDB(1)__初识数据库_第18张图片


你可能感兴趣的:(indexedDB,数据库,存储,web前端,技术,indexedDB)