IndexedDB.open() 開啟與新建資料庫
關於IndexedDB資料庫基本操作可以參閱IndexedDB 資料庫用法一章節。
本文將結合程式碼例項與圖示詳細介紹一下IndexedDB.open方法的應用。
語法結構:
[JavaScript] 純文字檢視 複製程式碼let IDBOpenDBRequest = indexedDB.open(name, version);
引數解析:
(1).name:必需,要開啟或者建立的資料庫名稱,一個字串。
(2).version:可選,資料庫的版本,一個整數。
雖然方法的使用方式比較簡單,但是涉及的知識點很多,下面將分步詳細介紹。
一.indexedDB屬於window物件:
indexedDB屬於window物件,所以可以將window物件省略。
程式碼片段演示如下:
[JavaScript] 純文字檢視 複製程式碼window.indexedDB.open("antzone", 1); indexedDB.open("antzone", 1);
上述兩段程式碼的功能相同,都可以開啟或者建立名稱為"antzone"的資料庫。
二.開啟資料庫還是建立資料庫:
建立與開啟資料庫都是通過IndexedDB.open()方法實現。
(1).如果對應名稱的資料庫不存在,那麼將會建立並開啟資料庫。
(2).如果對應名稱的資料已經存在,那麼將開啟對應的資料庫。
程式碼例項如下:
[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('person')) { let objectStore = db.createObjectStore('person', { keyPath: 'id' }); } console.log("資料庫建立成功"); } request.onsuccess = (ev) => { console.log("資料庫開啟成功"); } </script> </head> <body> <p>程式碼建立並開啟名為"antzone"的資料庫</p> </body> </html>
indexedDB.open是一個類似於AJAX的非同步操作,返回一個IDBOpenDBRequest物件,並不是期望的資料庫。
然後再通過IDBOpenDBRequest物件的事件來監聽相關狀態:
(1).success:資料庫開啟成功。
(2).error:資料庫開啟失敗。
(3).upgradeneeded:建立資料庫,或者資料庫版本發生變化。
(4)blocked:上一次的資料庫連線還未關閉。
假設在此之前並不存在一個名為"antzone"的資料庫,那麼上述程式碼會建立並開啟對應資料庫。
程式碼分析如下:
(1).當前並無任何資料庫,執行上述程式碼之後可以建立名稱為"antzone"的資料庫:
可以看到建立名為"antzone"的資料庫,版本為1。
如果看不到新建的資料庫,可以右鍵點選indexedDB,然後選擇重新整理選單即可出現。
首先會觸發upgradeneeded事件,新建資料庫可以認為版本是從無到有,然後再觸發success事件。
然後再看IndexedDB.open()方法返回值,控制檯截圖如下:
簡單分析如下:
(1).返回值是一個IDBOpenDBRequest型別物件。
(2).真正的資料庫物件是通過IDBOpenDBRequest型別物件的result屬性獲取。
三.關於資料庫版本問題:
通過方法的第二個引數規定新建或者開啟資料庫的版本。
第二個引數可以省略,規則如下:
(1).引數是整數,規定小數可能會出現一些問題,且會自動轉換為最接近的整數。
(2).如果新建資料庫,且省略此引數,那麼預設值為1,否則版本為規定值。
(3).如果開啟資料庫,且省略此引數,那麼值為當前版本,如果規定,則值必須大於等於當前版本。
(4).大於當前版本,則會觸發upgradeneeded事件。
(5).在同一時刻只會存在一個版本資料庫,且資料庫版本變動只能增加不能減少。
建立資料庫後,那麼首先任務就是建立物件倉庫,具體參閱IndexedDB 資料庫建立物件倉庫一章節。
相關文章
- IndexedDB.open()開啟與新建資料庫Index資料庫
- 【轉】新建例項開啟已有的資料庫 — 資料庫與例項的區分測試資料庫
- 新建資料庫使用者資料庫
- sqlserver01(使用篇從新建資料庫開始)SQLServer資料庫
- 第5章:從開啟的資料庫備份與恢復之備份開啟的資料庫資料庫
- Oracle新建資料庫並登入Oracle資料庫
- 新建Oracle資料庫三種方法Oracle資料庫
- [Flashback]開啟資料庫閃回資料庫功能資料庫
- 資料庫開啟監聽資料庫
- SequoiaDB資料庫之資料庫的配置與啟動資料庫
- Laravel 開啟資料庫事務Laravel資料庫
- 怎樣開啟mongodb資料庫MongoDB資料庫
- RAC開啟資料庫歸檔資料庫
- Oracle資料庫開啟NUMA支援Oracle資料庫
- 開啟資料庫歸檔模式資料庫模式
- Oracle資料庫開啟歸檔Oracle資料庫
- 開啟oracle資料庫歸檔Oracle資料庫
- oracle 正常關閉shutdown immediate與開啟open資料庫alertOracle資料庫
- 【SAP HANA】新建賬戶和資料庫(2)資料庫
- 第5章:從開啟的資料庫備份與恢復之從開啟的資料庫備份中完全恢復資料庫
- 開啟mysql 資料庫審計功能。MySql資料庫
- 開啟資料庫的閃回功能:資料庫
- RAC 資料庫的啟動與關閉資料庫
- Oracle資料庫的啟動與關閉Oracle資料庫
- 國產資料庫與開原始碼資料庫原始碼
- oracle資料庫開機自動啟動Oracle資料庫
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 第5章:從開啟的資料庫備份與恢復之從開啟的資料庫備份中進行不完全恢復資料庫
- 從新建資料夾開始構建UtopiaEngine(1)
- 亞信安慧AntDB資料庫開啟分散式資料庫的新篇章資料庫分散式
- 第6章:複製資料庫之克隆開啟的risenet資料庫資料庫SENet
- 3.2.4 開啟資料庫到限制訪問模式資料庫模式
- MySQL資料庫遠端連線開啟方法MySql資料庫
- Android 資料庫 大量插入 事務開啟Android資料庫
- 設定Oracle資料庫開機自啟動Oracle資料庫
- 開啟關閉oracle資料庫附加日誌Oracle資料庫
- 我的10G資料庫開啟LOG資料庫
- 如何批次新建資料夾?