HTML5本地儲存indexDB新建資料庫、資料庫增刪改查操作
阿新 • • 發佈:2019-02-04
var content = null;
// 本演示使用的資料庫名稱
var dbName = 'project';
// 版本
var version = 1;
// 資料庫資料結果
var db;
// 開啟資料庫
var DBOpenRequest = window.indexedDB.open(dbName, version);
// 如果資料庫開啟失敗
DBOpenRequest.onerror = function(event) {
logError('資料庫開啟失敗');
};
DBOpenRequest.onsuccess = function (event) {
// 儲存資料結果
db = DBOpenRequest.result;
};
// 下面事情執行於:資料庫首次建立版本,或者window.indexedDB.open傳遞的新版本(版本數值要比現在的高)
DBOpenRequest.onupgradeneeded = function(event) {
db = event.target.result;
db.onerror = function(event) {
logError('資料庫開啟失敗' );
};
// 建立一個數據庫儲存物件
var objectStore = db.createObjectStore(dbName, {
keyPath: 'id',
autoIncrement: true
});
// 定義儲存物件的資料項
objectStore.createIndex('id', 'id', {
unique: true
});
objectStore.createIndex('name' , 'name');
objectStore.createIndex('begin', 'begin');
objectStore.createIndex('end', 'end');
objectStore.createIndex('person', 'person');
objectStore.createIndex('remark', 'remark');
};
var method = {
// 新增資料
add: function (newItem) {
var transaction = db.transaction([dbName], "readwrite");
// 開啟已經儲存的資料物件
var objectStore = transaction.objectStore(dbName);
// 新增到資料物件中
var objectStoreRequest = objectStore.add(newItem);
objectStoreRequest.onsuccess = function(event) {
alert('新增成功!');
};
},
// 更新資料
update: function (id, data) {
// 編輯資料
var transaction = db.transaction([dbName], "readwrite");
// 開啟已經儲存的資料物件
var objectStore = transaction.objectStore(dbName);
// 獲取儲存的對應鍵的儲存物件
var objectStoreRequest = objectStore.get(id);
// 獲取成功後替換當前資料
objectStoreRequest.onsuccess = function(event) {
// 當前資料
var myRecord = objectStoreRequest.result;
// 遍歷替換
for (var key in data) {
if (typeof myRecord[key] != 'undefined') {
myRecord[key] = data[key];
}
}
// 更新資料庫儲存資料
objectStore.put(myRecord);
};
},
// 刪除資料
del: function (id) {
// 開啟已經儲存的資料物件
var objectStore = db.transaction([dbName], "readwrite").objectStore(dbName);
// 直接刪除
var objectStoreRequest = objectStore.delete(id);
// 刪除成功後
},
// 通過主鍵key單個記錄資料,主鍵是前面開始設定的相應key值
get: function (key) {
var transaction = db.transaction([dbName], "readwrite");
var store = transaction.objectStore(dbName);
var request = store.get(key);
request.onerror = function(){
console.error('getDataByKey error');
};
request.onsuccess = function(e){
var result = e.target.result;
console.log('查詢資料成功')
console.log(result);
};
},
// 遍歷資料表
cursor: function () {
var transaction = db.transaction([dbName], "readwrite");
var store = transaction.objectStore(dbName);
var request = store.openCursor();//開啟遊標
var arr = [];
request.onsuccess = function(e) {
var cursor = e.target.result;
if (cursor) {
console.log(cursor);
arr.push(cursor.value);
cursor.continue();
}
content = JSON.stringify(arr);
};
}
};
let count = 0;
// 新增
document.querySelectorAll('button')[0].onclick = function () {
// method.cursor();
method.add({name: 'zyc' + count++, begin: '2012-12-22', end: '2122-32-44', person: 'dada', remark: 'dada'});
method.cursor(); // 遍歷所有資料庫表project的記錄,並輸出到div裡面
document.querySelector("#content1").innerHTML = content;
}
// 修改
document.querySelectorAll('button')[1].onclick = function () {
method.update(3, {name: '我是更改的值id=3', begin: '2012-12-22', end: '2122-32-44', person: 'dada', remark: 'dada'});
method.cursor(); // 遍歷所有資料庫表project的記錄,並輸出到div裡面
document.querySelector("#content2").innerHTML = content;
}
// 刪除
document.querySelectorAll('button')[2].onclick = function () {
method.del(2); // 刪除主鍵key id = 2的值
method.cursor(); // 遍歷所有資料庫表project的記錄,並輸出到div裡面
document.querySelector("#content3").innerHTML = content;
}
// 遍歷
document.querySelectorAll('button')[3].onclick = function () {
method.cursor(); // 遍歷所有資料庫表project的記錄,並輸出到div裡面
document.querySelector("#content4").innerHTML = content;
}