零基础学习浏览器数据库IndexedDB

 

了解IndexedDB

IndexedDB桌面端50M上限,移动端5M上限,适合大量数据存储

 

IndexedDB是什么?

首先,它是一个数据库,是一个非关系型数据库

它不需要使用sql语句进行操作,它的数据形式是json

 

产生背景:

现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的大小不超过4KB,且每次请求都会发送回服务器;LocalStorage 在 2.5MB 到 10MB 之间(各家浏览器不同),而且不提供搜索功能,不能建立自定义的索引。所以当需要存储大量数据时,就需要使用IndexedDB进行数据存储与查询

 

IndexedDB特点:

1、容量大、nosql、同域共享

2、api复杂,版本概念难理解

3、可建立索引

IndexedDB应用

使用window.indexedDB执行指令

创建打开一个数据库

代码执行

//open是打开一个数据库,如果没有会默认创建一个
//建立数据库db:open是打开数据库的意思,如果没有,它会创建一个数据库
var request=window.indexedDB.open('db',1)
var db;

//onsuccess是每次打开数据库都会触发的一个事件
request.onsuccess=function(event){
    db=request.result;
    console.log('数据库打开成功');
};

//onupgradeneeded只在创建数据库的时候触发(第一次打开),
//是唯一可以声明表结构的地方因为createObjectStore只能
//在onupgradeneeded的回调函数中触发

request.onupgradeneeded = function (event){
    db=event.target.result

//建立数据表person
    if(!db.objectStoreNames.contains('person')){

//定义表的name为person,key为id---效果如下
    objectStore=db.createObjectStore('person',{keyPath:'id'});
}
console.log('person created')
}

效果:

 

 

 

数据的保存添加---add

添加数据,具有读写权限

代码:

db.transaction(['person'],'readwrite')

    .objectStore('person')

    .add({id:1,name:'liu',age:23})

效果:

 

数据的修改---put

将peison表中的name修改为“liuxiaowei”,age改为“18”

代码:

db.transaction(['person'],'readwrite')

    .objectStore('person')

    .put({id:1,name:'liuxiaowei',age:18})

效果:

 

 

数据的查询---get

代码:

var request=db.transaction(['person'],'readwrite')

    .objectStore('person')

    .get(1)

request.onsuccess=function(e){

    console.log(request.result)

}

效果:

 

数据的删除---delete

删除id为1的数据

代码:

var request=db.transaction(['person'],'readwrite')

    .objectStore('person')

    .delete(1)

 

效果:

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
IndexedDB浏览器提供的本地数据库,可以在浏览器中存储结构化数据。下面是 IndexedDB 的基本使用方法: 1. 打开数据库 使用 `indexedDB` 对象的 `open()` 方法打开数据库,如下所示: ``` let request = indexedDB.open('myDB', 1); ``` 其中,第一个参数是数据库名称,第二个参数是数据库版本号。如果数据库不存在,则会创建一个新的数据库。 2. 创建对象仓库 在成功打开数据库的回调方法 `request.onsuccess` 中,可以获取到数据库对象 `event.target.result`,然后使用它的 `createObjectStore()` 方法创建一个对象仓库(即数据表),如下所示: ``` let db = event.target.result; let objectStore = db.createObjectStore('people', { keyPath: 'id' }); ``` 其中,第一个参数是对象仓库的名称,第二个参数是一个对象,包含一个 keyPath 属性和其他可选属性。keyPath 用来指定数据表中的主键。 3. 添加数据 使用事务 `db.transaction()` 开启一个事务,然后使用 `add()` 方法向数据表中添加数据,如下所示: ``` let transaction = db.transaction(['people'], 'readwrite'); let objectStore = transaction.objectStore('people'); let request = objectStore.add({ id: 1, name: 'John Doe' }); ``` 其中,第一个参数是一个数组,包含要访问的对象仓库的名称,第二个参数是事务类型,可以是 'readonly' 或 'readwrite'。`add()` 方法的参数是要添加的数据。 4. 查询数据 使用事务 `db.transaction()` 开启一个事务,然后使用 `get()` 方法查询数据,如下所示: ``` let transaction = db.transaction(['people']); let objectStore = transaction.objectStore('people'); let request = objectStore.get(1); request.onsuccess = function(event) { console.log('Name: ' + event.target.result.name); }; ``` `get()` 方法的参数是要查询的数据的主键值。查询结果保存在 `request.onsuccess` 回调方法中的 `event.target.result` 中。 5. 更新数据 使用事务 `db.transaction()` 开启一个事务,然后使用 `put()` 方法更新数据,如下所示: ``` let transaction = db.transaction(['people'], 'readwrite'); let objectStore = transaction.objectStore('people'); let request = objectStore.put({ id: 1, name: 'Jane Doe' }); ``` `put()` 方法的参数是要更新的数据。 6. 删除数据 使用事务 `db.transaction()` 开启一个事务,然后使用 `delete()` 方法删除数据,如下所示: ``` let transaction = db.transaction(['people'], 'readwrite'); let objectStore = transaction.objectStore('people'); let request = objectStore.delete(1); ``` `delete()` 方法的参数是要删除的数据的主键值。 以上就是 IndexedDB 的基本使用方法。需要注意的是,IndexedDB 的 API 非常庞大,不仅仅包含上面提到的这些方法,还包括索引、游标、版本升级等功能。如果需要更详细的介绍和示例代码,可以参考 MDN 的文档:https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值