IndexedDB数据库

10 篇文章 0 订阅
4 篇文章 0 订阅
1. 打开数据库并且开始一个事务。(事务 一个平台 演员的舞台 是一个可以提供表演的地方)
2. 创建一个 object store。
1. 构建一个请求来执行一些数据库操作,像增加或提取数据等。
2. 通过监听正确类型的 DOM 事件以等待操作完成。
3. 在操作结果上进行一些操作(可以在 request 对象中找到)
查看IndexedDB中 存储的数据

使用流程(1.打开数据库2.建表3.增删改查)
1. 判断浏览器 是不是 支持 indexedDB
indexedDB?alert(“支持indexedDB”):alert(“不支持indexedDB”);
2. 打开/创建数据库
indexedDB.open(“数据库的名字”); ->IDBOpenDBRequest
监听事件:
onerror:创建或者 打开数据库 失败的时候 调用
onsuccess:创建或者 打开数据库成功 的时候 调用
Onupgradeneeded:只在数据库的版本号 被更新的时候调用
3. 创建类似于BMOB里面 的某个表(也可以想象为是一个数据模型)
通过ObjectStore进行操作(增删改查建表)
>1.建表(创建类)数据库的对象.createObjectStore(“表名字”,设置唯一字段(设置这个类里面 可以找到某一个对象的属性));
>2.创建字段(给创建的类 添加属性)ObjectStore的对象.createIndex(“属性名”,”key“);
4. 增删改查的操作
  objectStore.add() 增
objectStore.delete()删
objectStore.put()改
objectStore.get()查
 
代码示例:
1. 打开数据库
functionopenDB() {
    varrequest= indexedDB.open("noteDB",1);
    request.onerror= function(errror) {
        console.log(errror);
    };
    request.onsuccess= function() {
        console.log("打开数据库成功");
    };
    //只在数据库版本号 两次不一致的情况下 调用
    request.onupgradeneeded= function() {
        console.log("更新数据库成功",this);
    };
 
2. 建表
从没有数据库到有数据库、数据库的版本号更新的时候 再去建表。
查询数据库中是不是存在同样的表,如果存在就不用再创建;
onupgradeneeded 可以监听数据库版本号的变更;
可以通过IDBDataBase里面的objectStoreNames查看数据库里面都创建了哪些表名;
vartableName= "note";
//    可以通过objectStoreNames获取到 已经建好表的名字
    if(!db.objectStoreNames.contains(tableName)){

    //    建表
        varobjectStore= db.createObjectStore(tableName);
    //    创建表里面的字段
    //    创建字段的时候  需要 至少传入两个参数
    //    1.字段的名字 2.可以通过哪个名字  查找到 这个字段对应的内容
        objectStore.createIndex("title","title");
        objectStore.createIndex("content","content");
        objectStore.createIndex("date","date");
    }
 
3. 增删改查的操作
1)db -> transaction()-> 事务的对象
2)事务的对象 -> objectStore
3)objectStore -> 增删改查
 
添加数据
functionaddData(info) {
    //获得到事务的对象
    vartransaction= database.transaction(["note"],"readwrite");
    //存放某一种类型数据的容器(类似类)
    varobjectStore= transaction.objectStore("note");
//    执行增删改查的操作
    returnobjectStore.add(info);
}

查询数据
Get
getAll
functionsearchAll(){
returndatabase.transaction(["note"],"readonly").objectStore("note").getAll();//查询所有数据,返回request
}
会得到一个IDBRequest对象,
可以通过监听成功事件,或得到查询到的数据
searchAll().onsuccess=function(){
console.log(this.result);
};
如果查询单个可以对应的数据可以通过get(key)
functionsearch(){
database.transaction(["note"],"readonly").objectStore("note").get(1502242891548).onsuccess=function(){
console.log(this);
}
}
删除数据
functiondeleteData(){database.transaction(["note"],"readwrite").objectStore("note").delete(1502242543349).onsuccess=function(){
console.log(this)
}
}
更新数据
functiondeleteData(){
database.transaction(["note"],"readwrite").objectStore("note").put({title:"更新数据",content:"更新数据",date:1502183031380}).onsuccess=function() {
console.log(this);
};
注意事项:
任何数据库的操作,更新字段、表都需要先清除原来的数据库;
如果是查找、删除、修改具体的内容的时候,需要根据一个唯一值查找
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值