当前位置:首页 > 行业动态 > 正文

html5创建本地数据库

HTML5通过localStorage和IndexedDB实现本地存储,前者存简单键值,后者处理复杂结构数据。(

HTML5本地数据库

HTML5 提供了多种本地存储方案,IndexedDB 是功能最强大的本地数据库,支持存储大量结构化数据,以下是常见的本地存储方式对比:

html5创建本地数据库  第1张

存储方式 数据类型 容量限制 持久性 浏览器支持
localStorage 键值对(字符串) 约5MB 所有现代浏览器
sessionStorage 键值对(字符串) 约5MB 所有现代浏览器
IndexedDB 对象/二进制数据 约500MB+ Chrome/Firefox/Edge/Safari
WebSQL SQL数据库 约50MB 部分浏览器(已弃用)

IndexedDB 基础用法

打开数据库

通过 indexedDB.open() 方法创建或连接数据库:

const request = indexedDB.open('myDatabase', 1); // 版本号为1
request.onerror = (event) => {
  console.error('数据库打开失败:', event.target.error);
};
request.onsuccess = (event) => {
  const db = event.target.result; // 获取数据库实例
  console.log('数据库打开成功:', db);
};
request.onupgradeneeded = (event) => {
  const db = event.target.result;
  // 创建对象仓库(类似表)
  db.createObjectStore('users', { keyPath: 'id' });
};

数据操作流程

步骤 说明
打开数据库 使用 indexedDB.open() 连接或创建数据库
创建对象仓库 onupgradeneeded 事件中定义数据结构(如表)
事务处理 通过 db.transaction() 开启事务,支持读写操作
增删改查 使用 add()/put()/delete()/get()/getAll() 等方法操作数据
关闭数据库 事务自动提交后,数据库连接会自动关闭

完整示例:用户信息管理

添加数据

const dbRequest = indexedDB.open('myDatabase', 1);
dbRequest.onsuccess = (event) => {
  const db = event.target.result;
  const transaction = db.transaction('users', 'readwrite'); // 开启读写事务
  const store = transaction.objectStore('users');
  // 添加数据
  store.add({ id: 1, name: 'Alice', age: 25 });
  store.add({ id: 2, name: 'Bob', age: 30 });
  transaction.oncomplete = () => {
    console.log('数据添加成功');
  };
  transaction.onerror = (event) => {
    console.error('事务错误:', event.target.error);
  };
};

查询数据

const dbRequest = indexedDB.open('myDatabase', 1);
dbRequest.onsuccess = (event) => {
  const db = event.target.result;
  const transaction = db.transaction('users', 'readonly');
  const store = transaction.objectStore('users');
  // 查询所有数据
  store.getAll().onsuccess = (event) => {
    console.log('所有用户数据:', event.target.result);
  };
};

相关问题与解答

问题1:localStorageIndexedDB 有什么区别?

解答

  • 数据类型localStorage 仅支持字符串,IndexedDB 支持对象、数组、二进制数据。
  • 容量localStorage 约5MB,IndexedDB 可达数百MB。
  • API复杂度localStorage 是简单键值对,IndexedDB 提供事务、索引、游标等数据库功能。
  • 适用场景localStorage 适合简单配置存储,IndexedDB 适合复杂数据管理(如离线应用)。

问题2:如何选择合适的本地存储方案?

解答

  • 简单键值存储:用 localStorage(如用户偏好设置)。
  • 会话级临时存储:用 sessionStorage(如表单临时数据)。
  • 结构化/大量数据:用 IndexedDB(如离线邮件、待办事项应用)。
  • 兼容性要求高:优先 localStorage,避免 `Indexed
0