新闻中心
j*ascript怎样操作数据库?_j*ascript的IndexedDB如何使用?
IndexedDB 是浏览器内置的异步、事务型客户端数据库,通过对象存储组织数据,支持索引、多种数据类型及版本控制;需用 open() 初始化并处理 onupgradeneeded 创建存储,所有增删改查操作必须在事务中进行。

J*aScript 本身不能直接操作服务端数据
库(比如 MySQL、PostgreSQL),它运行在浏览器中,没有权限直连服务器数据库。但浏览器提供了 IndexedDB —— 一个内置的、异步的、支持事务的客户端数据库,适合存储大量结构化数据(如对象、文件、二进制数据)。
IndexedDB 是什么?
IndexedDB 是一种低级 API,不是 SQL 数据库,不支持 SQL 查询语句,而是通过对象存储(Object Store)来组织数据。它支持索引、事务、键值对存取,适合离线应用、缓存、大表单暂存等场景。
关键特点:
- 异步操作,不会阻塞主线程
- 支持事务(readwrite、readonly)保障数据一致性
- 可存储 JS 对象、ArrayBuffer、Blob、File 等原生类型
- 有版本控制机制,升级数据库结构需用
onupgradeneeded
如何打开并初始化 IndexedDB?
使用 window.indexedDB.open() 打开数据库,首次打开会触发 onupgradeneeded 创建对象存储。
示例:创建名为 myAppDB、版本为 1 的数据库,并添加一个叫 users 的对象存储:
const request = indexedDB.open('myAppDB', 1);
request.onerror = () => console.error('打开失败', request.error);
request.onsuccess = () => {
const db = request.result;
console.log('数据库已就绪', db);
};
request.onupgradeneeded = (event) => {
const db = event.target.result;
// 创建对象存储(类似一张表),主键为 'id'
if (!db.objectStoreNames.contains('users')) {
const store = db.createObjectStore('users', { keyPath: 'id' });
// 可选:为 name 字段建立索引,方便按姓名查询
store.createIndex('byName', 'name', { unique: false });
}
};
怎样增删改查数据?
所有操作必须在事务中进行。先获取事务和对象存储,再调用对应方法。
ShopEx助理
一个类似淘宝助理、ebay助理的客户端程序,用来方便的在本地处理商店数据,并能够在本地商店、网上商店和第三方平台之间实现数据上传下载功能的工具。功能说明如下:1.连接本地商店:您可以使用ShopEx助理连接一个本地安装的商店系统,这样就可以使用助理对本地商店的商品数据进行编辑等操作,并且数据也将存放在本地商店数据库中。默认是选择“本地未安装商店”,本地还未安
0
查看详情
假设已拿到 db 实例:
-
添加数据:
add()(主键冲突会报错)或put()(覆盖同主键) -
读取单条:
get(id) -
按索引查询:
index.get(value)或index.getAll() -
遍历全部:
openCursor() -
删除:
delete(id)
示例:添加一个用户
function addUser(db, user) {
const tx = db.transaction('users', 'readwrite');
const store = tx.objectStore('users');
const req = store.put(user); // user 必须含 id 字段(因 keyPath 是 'id')
req.onsuccess = () => console.log('用户已保存');
req.onerror = () => console.error('保存失败', req.error);
}
常见注意事项
IndexedDB 容易踩坑,注意这些点:
- 所有回调(success/error)里的
this指向请求对象,推荐用event.target.result或箭头函数避免 this 丢失 - 事务生命周期很短,必须在事件回调里完成操作,否则事务自动关闭
- 不能跨域访问(同源策略限制),localhost 和 127.0.0.1 被视为不同源
- 存储空间有限(通常几十 MB 到几百 MB,取决于浏览器和设备),不适合存超大文件
- 调试可用 Chrome DevTools → Application → IndexedDB 查看内容
基本上就这些。IndexedDB 不复杂但容易忽略事务和版本逻辑,写几个封装函数(如 dbPromise + async/await 包装)能大幅提升开发体验。
以上就是j*ascript怎样操作数据库?_j*ascript的IndexedDB如何使用?的详细内容,更多请关注其它相关文章!
# 需用
# 全网推广营销哪里好做
# 午夜三级网站建设
# 宁河区企业营销推广公司
# 沈阳植保网站建设项目
# 地铁商铺推广营销案例
# 江苏企业网络推广网站
# 济南建设委员会网站
# 富硒鸡蛋推广营销
# 如何创造论文网站推广
# 红人联盟营销推广怎么做
# 是一种
# 连接池
# 几个
# 离线
# mysql
# 回调
# 客户端
# 主键
# 键值
# 如何使用
# 键值对
# 跨域
# win
# ai
# app
# 浏览器
# js
# java
# javascript
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用
C++ vector二维数组定义_C++ vector of vector用法
淘宝网网页版登录入口 淘宝官方网页版快捷登录
高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】
蛙漫安全无毒 官方认证的绿色入口
css滚动动画效果怎么实现_使用Animate.css滚动触发动画类
composer 和 npm/yarn 在管理依赖方面有什么核心思想差异?
葱吃多了会怎样 葱吃多了会伤胃吗
1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】
利用Bokeh CustomJS动态控制DataTable列可见性
解决移动端滚动问题的overflow属性应用指南
KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法
Python实时数据流中的动态最值查找策略
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
React Router 嵌套组件中 URL 重定向问题的解决方案
Django通过AJAX异步上传图片并保存至模型的完整指南
CKEditor 5 自定义构建在React应用中渲染失败的调试与解决
mysql如何设置表访问权限_mysql表访问权限配置
从J*aScript对象中精确提取指定属性的教程
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
马斯克:Optimus 人形机器人复数形式为 Optimi
win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
jQuery Mask 插件中实现电话号码固定前导零的教程
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】
Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区
Python实现多节点属性重叠度分析教程
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
Kafka Streams中基于消息头条件过滤消息的实现指南
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
Centos/Linux 系统下安装 composer 的完整步骤
Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值
sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】
Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题
Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航
Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略
J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换
如何使用 Excel 发布器与 Power BI 分享 Excel 洞察
提升Kafka消费者健壮性:会话超时处理与消息处理语义
使用J*aScript检测输入元素是否包含在特定类中
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
C#使用XPath查询节点时出错? 常见语法错误与调试技巧


2025-12-15
浏览次数:次
返回列表