我创建了包含多个表和数据的indexedDB数据库。现在我想重新打开现有的indexedDB数据库,并希望从特定的表中读取数据。请帮助我
答案 0 :(得分:3)
在IndexedDB中,通常使用window.indexedDB.open(DB_NAME, DB_VERSION);
打开数据库(首次打开或重新打开以进行修改)
此处,DB_VERSION
是数据库的版本号,用于确定是否将打开数据库以进行创建,修改或读取。
进一步阅读:
open
时第一次,您通常会将版本号调用为1,这将触发onupgradeneeded
事件处理程序(可以使用此事件处理程序) to"创建"数据库模式)和onsuccess
事件处理程序(此事件处理程序将用于保存数据库处理程序)按顺序,然后您可以使用数据库处理程序访问数据库。open
,然后再次onupgradeneeded
事件处理程序(此事件处理程序可用于"创建& #34;数据库模式)和onsuccess
事件处理程序(此事件处理程序将用于保存数据库处理程序)将按顺序触发。open
,然后再次只有onsuccess
事件处理程序(此事件处理程序将用于保存数据库)处理程序)将按顺序解雇。onupgradeneeded
事件处理程序用于创建或修改数据库架构。onsuccess
事件处理程序用于获取将用于访问数据库的数据库处理程序。open
(直到您希望修改数据库架构),但这是您第一次然后调用你应该使用onsuccess
事件处理程序保存数据库处理程序,然后使用该数据库处理程序访问数据库。在下面使用一次,然后查看警报,然后再次执行(在浏览器上没有清除缓存,以便相同的数据库仍然存在),然后查看警报。
var request = window.indexedDB.open("SO", 1);
request.onblocked = function(event) {
alert("Error, cannot open database. Error message: Database in blocked state. " +
"Please close all open windows, clear browser cache and use a fresh window.");
};
//Callback for error upon DB open
request.onerror = function(event) {
alert('Error, cannot open database/Erreur, ne peut pas ouvrir la base de données');
};
//Callback for success upon DB open
request.onsuccess = function(event) {
alert('onsuccess. Save your database handler, for example something, DB_HANDLER = event.target.result;');
};
//Callback for onupgradeneeded upon DB open
request.onupgradeneeded = function(event) {
alert('onupgradeneeded. Create/modify the database schema');
};