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資料庫
- RAC開啟資料庫歸檔資料庫
- Oracle資料庫開啟NUMA支援Oracle資料庫
- Laravel 開啟資料庫事務Laravel資料庫
- 怎樣開啟mongodb資料庫MongoDB資料庫
- [20210529]延遲開啟資料庫.txt資料庫
- 開啟mysql 資料庫審計功能。MySql資料庫
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 國產資料庫與開原始碼資料庫原始碼
- 亞信安慧AntDB資料庫開啟分散式資料庫的新篇章資料庫分散式
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- 從新建資料夾開始構建UtopiaEngine(1)
- 3.2.4 開啟資料庫到限制訪問模式資料庫模式
- MySQL資料庫遠端連線開啟方法MySql資料庫
- 如何批次新建資料夾?
- 3.1 啟動資料庫資料庫
- 啟動MySql資料庫MySql資料庫
- 【中國資料庫前世今生】資料儲存管理的起源與現代資料庫發展啟蒙資料庫
- 批量新建資料夾並命名的辦法 如何批量新建很多資料夾
- 批次新建資料夾並命名的辦法 如何批次新建很多資料夾
- 新炬網路與GBASE開啟戰略合作助力資料庫國產化資料庫
- 資料庫與資料庫管理系統概述資料庫
- 實時資料庫與時序資料庫資料庫
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- 2019,國產資料庫元年開啟新紀元資料庫
- 1.2.4. 任務4:建立和開啟資料庫資料庫
- 啟動資料庫監聽資料庫
- MySQL資料庫如何啟動?MySql資料庫
- MySQL資料庫設計與開發規範MySql資料庫
- 平安雲原生資料庫開發與實踐資料庫
- win10怎麼新建資料夾_windows10系統如何新建資料夾Win10Windows
- oracle資料庫的啟動關閉與各種服務Oracle資料庫
- LevelDB C++教程: 如何開啟和關閉資料庫C++資料庫
- Oracle資料庫歸檔模式的開啟和關閉Oracle資料庫模式
- 開啟網頁顯示資料庫連線出錯網頁資料庫
- 資料庫恢復後開啟時遇到 ORA-01152資料庫
- QGIS如何開啟ArcGIS建立的GDB資料庫檔案資料庫