indexedDB的学习

indexedDB的学习

var myDB = {
	name:'testDB',
	version: '1',
	db:null
}

一、建立打开数据库

使用indexedDB.open()方法来建立打开数据库

var request = window.indexedDB.open(myDB.name:数据库名称,myDB.version:indexedDB版本号)
  1. error事件监听
    打开indexedDB失败。

    request.onerror = function(e){
    	console.log('open indexedDB error');
    }
    
  2. success事件监听
    打开indexedDB成功。

    request.onsuccess = function(e){
    	myDB.db = e.target.result; // 获取数据库实例
    }
    
  3. upgradeneeded事件监听
    如果指定的版本号,大于数据库的实际版本号,就会发生数据库升级事件upgradeneeded。

    // from no database to first version, first version to second version
    request.onupgradeneeded = function(e){
    	console.log(`from ${e.oldVersion} to ${e.newVersion}`);
    	myDB.db = e.target.result; // 获取数据库实例
    }
    

二、关闭数据库

myDB.db.close();

三、删除数据库

window.indexedDB.deleteDatabase(myDB.name:数据库名称);

四、新建对象仓库(类似新建数据表)

if (!myDB.db.objectStoreNames.contains('person')) { // 先判断是否存在对象仓库
		// 建立一个object store
	    objectStore = myDB.db.createObjectStore('person', { 
	    keyPath: 'id' // 设置主键字段名
	    // autoIncrement: true // 自动生成为一个递增的整数的主键
	});
}

五、新建索引

// 建索引,三个参数分别为索引名称、索引所在的属性、配置对象(说明该属性是否包含重复的值)
var titleIndex = objectStore.createIndex('by_title', 'title', {
  unique: true
})

var authorIndex = objectStore.createIndex('by_author', 'author', {
  unique: true
})

六、新建数据

通过事务新建数据。

// 事务和object store的绑定
var transaction = myDB.db.transaction('books', 'readwrite'); // 设置操作模式为读写
var store = transaction.objectStore('books');

// 新建数据
var addDataRequest = store.add({
	title:'Hello world!',
	author:'Computer',
	id:123456
});
  1. error监听事件

    addDataRequest .onerror = function (e) {
    	console.log('新建数据失败');
    }
    
  2. success监听事件

    addDataRequest .onsuccess = function (e) {
    	console.log('新建数据成功',e.target.result); // 返回新建数据的主键值
    };
    

七、读取数据

通过事务读取数据。

// 事务和object store的绑定
var transaction = myDB.db.transaction('books'); // 若无第二个参数,则操作模式为只读
var store = transaction.objectStore('books');

// 读取数据
var readDataRequest = store.get(123456); // 通过主键读取数据
  1. error监听事件

    readDataRequest.onerror = function (e) {
    	console.log('读取数据失败');
    }
    
  2. success监听事件

    readDataRequest.onsuccess = function (e) {
    	console.log('读取数据成功',e.target.result); // 返回数据
    };
    

八、 更新数据

通过事务更新数据。

// 事务和object store的绑定
var transaction = myDB.db.transaction('books', 'readwrite'); // 设置操作模式为读写
var store = transaction.objectStore('books');

// 更新数据
var updateDataRequest = store.put({
	title:'Hi world!',
	author:'Computer', 
	id: 123456
});
  1. error监听事件

    updateDataRequest.onerror = function (e) {
    	console.log('更新数据失败');
    }
    
  2. success监听事件

    updateDataRequest.onsuccess = function (e) {
    	console.log('更新数据成功',e.target.result); // 返回更新数据的主键值
    };
    

九、 删除数据

通过事务删除数据。

// 事务和object store的绑定
var transaction = myDB.db.transaction('books', 'readwrite'); // 设置操作模式为读写
var store = transaction.objectStore('books');

// 删除数据
var deleteDataRequest = store.delete(123456); // 通过主键删除数据
  1. error监听事件

    deleteDataRequest.onerror = function (e) {
    	console.log('删除数据失败');
    }
    
  2. success监听事件

    deleteDataRequest.onsuccess = function (e) {
    	console.log('删除数据成功');
    };
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值