HTML5中的Indexed Database

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介:    Indexed Database一种在浏览器中通过JavaScript操作的功能的数据库,为同一个源执行的程序共享空间,在同一个源拥有的空间中可以创建多个数据库,而在1个数据库中又可以创建多个对象存储。

   Indexed Database一种在浏览器中通过JavaScript操作的功能的数据库,为同一个源执行的程序共享空间,在同一个源拥有的空间中可以创建多个数据库,而在1个数据库中又可以创建多个对象存储。  对象存储类似于mongDB中的数据集合。


  连接数据库:

var indexedDB = window.indexedDB ||
                           window.webkitIndexedDB ||
                           window.mozIndexedDB;

var db = null;

//连接数据库
var request = indexedDB.open('testdb');
//连接数据库成功
request.onsuccess = function(event) {
     //使用全局变量引用数据库
     db =event.target.result;
};
//连接数据库失败
request.onerror = function(event) {
     alert('连接数据库失败');
};

     创建对象存储:

    通过调用createObjectStore方法创建,该方法只能在数据库的版本更改事务中执行,setVersion方法后会自动开启该事务。

  

//更改DB版本
var request = db.setVersion('1.0');

request.onsuccess= function(event) {
    //创建对象存储
    var store = db.createObjectStore('books',{
           keyPath: '_id',
           autoIncrement:true
     });
}

     数据的添加、删除、引用

//获得事务对象
var IDBTransaction = window.IDBTransaction || window.webkitIdbTransaction;

//添加数据函数
function addData(data){
     var transaction = db.transaction(['books'],IDBTransaction.READ_WRITE);
    //添加数据,也可使用put
    var request = transaction.objectStore('books').add(data);
    request.onsuccess = function(event) {
        //若成功,返回键
        var key = event.target.result;
        console.log('success! key-> ',key);
    };
}

//数据引用
function getData(key) {
    //事务的开始
    var transaction = db.transaction(['books']);
    //数据的引用
    var request = transaction.objectStore('books').get(key);
    request.onsuccess = function(event) {
         var data= event.target.result;
         console.log('success data->',data);
   };
}
//数据的删除
function delData(key){
   //事务的开始
   var transaction = db.transaction(['books'],IDBtransaction.READ_WRITE);
   var request=transaction.objectStore('books').delete(key);
   
   request.onsuccess=function(event) { 
     console.log('delete success');
   };
}

   索引的创建:只能在数据库版本更改事务中进行索引的创建

var request =db.setVersion('1.1');

request.onsuccess=function(event) {
    var transaction = event.target.result;
    var store=transaction.objectStore('books');
    //创建索引
     var index=store.createIndex('index_name','column_name');
};

使用索引检索数据

var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;
var IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;

//事务和对象存储
var transation=db.transaction(['books'],IDBTransaction.READ_WRITE);
var store=transaction.objectStore('books');

//创建指定范围对象10~100
var range=IDBKeyRange.bound('10','100');

//通过索引检索数据
var request=store.index('index_name').openCursor(range);

request.onsuccess=function(event) {
     //获取IDBCursor对象
    var cursor=event.target.result;
    //若数据存在
    if(cursor){
        var data =cursor.value;
        //更新数据
       data.name='hh';
       cursor.update(data);
       //cursor.delete删除该数据
       
       //检索下一条
       cursor.continue();
    }
};

事务的回滚

var request =index.openCursor(keyRange);
request.onsuccess=function(event) {
     var cursor=event.target.result;
     if(cursor) {
           //若有readonly标志
          if(cursor.value.readonly){
                var transaction =event.target.transaction;
                //回滚
                transaction.abort();
          }else {
                cursor.delete();
                cursor.continue();
           }
     }
};




 


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
7月前
|
SQL Oracle 关系型数据库
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database (
97 2
|
7月前
|
Oracle 关系型数据库
19c 开启Oracle Database Vault
19c 开启Oracle Database Vault
170 1
|
7月前
|
SQL Oracle 关系型数据库
Connect to Autonomous Database Using Oracle Database Tools
Connect to Autonomous Database Using Oracle Database Tools
66 1
|
6月前
|
Oracle 关系型数据库 Linux
Requirements for Installing Oracle Database/Client 19c on OL8 or RHEL8 64-bit (x86-64) (Doc ID 2668780.1)
Requirements for Installing Oracle Database/Client 19c on OL8 or RHEL8 64-bit (x86-64) (Doc ID 2668780.1)
57 0
|
7月前
|
人工智能 Oracle 关系型数据库
一篇文章弄懂Oracle和PostgreSQL的Database Link
一篇文章弄懂Oracle和PostgreSQL的Database Link
|
7月前
|
SQL Oracle 安全
Oracle Database Vault Access Control Components
Oracle Database Vault Access Control Components
58 0
|
7月前
|
Oracle 安全 关系型数据库
What Is Oracle Database Vault?
The Oracle Database Vault security controls protect application data from unauthorized access, and helps you to comply with privacy and regulatory requirements. You can deploy controls to block privileged account access to application data and control sensitive operations inside the database using
43 0

热门文章

最新文章