indexedDB 刪除資料庫

admin發表於2019-07-18

既然能建立資料庫,自然也能夠刪除對應的資料庫。

關於建立資料庫可以參閱IndexedDB.open() 開啟與新建資料庫一章節。

通過indexedDB.deleteDatabase()方法可以刪除指定名稱的資料庫。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
let IDBOpenDBRequest  = indexedDB.deleteDatabase(name)

上述方法解析:

(1).name:必需,要被刪除的資料庫名稱。

(2).IDBOpenDBRequest:返回值是一個IDBOpenDBRequest型別物件。

此方法是非同步的,類似於AJAX請求,返回值是一個IDBOpenDBRequest型別請求物件。

可以通過success事件和error事件監聽刪除資料庫成功還是失敗,看如下程式碼例項:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script>
let request = window.indexedDB.open("antzone", 1);

request.onupgradeneeded = (ev) => {
  let db = ev.target.result;
  if (!db.objectStoreNames.contains('students')) {
    let objectStore = db.createObjectStore('students',{keyPath:"id"});
    objectStore.createIndex("xingbie","sex",{ unique: false });
  }
}

request.onsuccess = (ev) => {
  let db = ev.target.result;
  let transaction = db.transaction(['students'], 'readwrite');
  let objectStore = transaction.objectStore('students');
  objectStore.add({
    id:1,
    name:"螞蟻部落",
    age:20,
    sex:"男"
  });
  db.close();
  let deleteRequest = window.indexedDB.deleteDatabase("antzone");
  deleteRequest.onerror = function (event) {
    console.log('刪除失敗');
  };
  deleteRequest.onsuccess = function (event) {
    console.log('刪除成功');
  };
}
</script>
</head>
<body>
  <p>為物件倉庫新增資料</p>
</body>
</html>

上述程式碼可以刪除名稱為"antzone"的資料庫,程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201907/18/134843l94guojjal32iiux.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

下面對程式碼進行一下簡單分析:

(1).上述程式碼建立資料庫並新增資料。

(2).最後在success事件處理函式中刪除對應資料庫。

(3).需要注意的是,首先要close()關閉資料庫,才能夠刪除,否則刪除不會成功。

相關文章