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,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
1月前
|
Oracle 关系型数据库
19c 开启Oracle Database Vault
19c 开启Oracle Database Vault
22 1
|
16天前
|
人工智能 Oracle 关系型数据库
一篇文章弄懂Oracle和PostgreSQL的Database Link
一篇文章弄懂Oracle和PostgreSQL的Database Link
|
1月前
|
SQL Oracle 安全
Oracle Database Vault Access Control Components
Oracle Database Vault Access Control Components
10 0
|
1月前
|
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
11 0
|
2月前
|
Oracle 关系型数据库 Linux
服务器Centos7 静默安装Oracle Database 12.2
服务器Centos7 静默安装Oracle Database 12.2
111 0
|
5月前
|
Oracle 关系型数据库 数据库
windows Oracle Database 19c 卸载教程
打开任务管理器 ctrl+Shift+Esc可以快速打开任务管理器,找到oracle所有服务然后停止。 停止数据库服务 在开始卸载之前,确保数据库服务已经停止。你可以使用以下命令停止数据库服务: net stop OracleServiceORCL Universal Installer 卸载Oracle数据库程序 一般情况运行Oracle自带的卸载程序,如使用Universal Installer 工具卸载。 点击开始菜单找到Oracle,然后点击Oracle安装产品,再点击Universal Installer。 点击之后稍等一会然后会进入进入下图界面,点击卸载产品。 选中要删除的Orac
132 1
|
6月前
|
存储 Oracle 关系型数据库
windows 使用 Oracle Database 19c
Oracle数据库是由美国Oracle Corporation(甲骨文公司)开发和提供的一种关系型数据库管理系统,它是一种强大的关系型数据库管理系统(RDBMS)。它使用表格(表)组织和存储数据,通过SQL语言进行数据管理。数据以表格形式存储,表之间可以建立关系。支持事务处理、多版本并发控制、安全性和权限控制。具有高可用性、容错性,支持分布式数据库和可扩展性。Oracle Corporation提供全面的支持和服务,使其成为企业级应用的首选数据库系统。
61 0