indexedDB的学习
var myDB = {
name:'testDB',
version: '1',
db:null
}
一、建立打开数据库
使用indexedDB.open()方法来建立打开数据库
var request = window.indexedDB.open(myDB.name:数据库名称,myDB.version:indexedDB版本号)
-
error事件监听
打开indexedDB失败。request.onerror = function(e){ console.log('open indexedDB error'); }
-
success事件监听
打开indexedDB成功。request.onsuccess = function(e){ myDB.db = e.target.result; // 获取数据库实例 }
-
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
});
-
error监听事件
addDataRequest .onerror = function (e) { console.log('新建数据失败'); }
-
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); // 通过主键读取数据
-
error监听事件
readDataRequest.onerror = function (e) { console.log('读取数据失败'); }
-
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
});
-
error监听事件
updateDataRequest.onerror = function (e) { console.log('更新数据失败'); }
-
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); // 通过主键删除数据
-
error监听事件
deleteDataRequest.onerror = function (e) { console.log('删除数据失败'); }
-
success监听事件
deleteDataRequest.onsuccess = function (e) { console.log('删除数据成功'); };