You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova中Web SQL被废弃的原因及iOS Cordova应用UnknownError: Web SQL is deprecated报错解决方案咨询

关于Cordova中Web SQL被废弃及报错的解决方案

嘿,这个问题我之前帮开发者处理过不少,咱们一步步来拆解:

为什么Web SQL会被标记为废弃?

Web SQL从始至终都不是W3C的正式标准,只是一个临时的实验性规范。后来W3C确定了IndexedDB作为官方推荐的客户端存储标准,各大浏览器厂商(包括iOS的WebKit内核)陆续停止对Web SQL的维护,甚至将其标记为废弃。而Cordova的WebView是基于系统自带的WebKit内核运行的,所以当你调用Web SQL API时,就会触发这个废弃提示。

解决报错的可行方案

1. 切换到IndexedDB(推荐标准方案)

IndexedDB是W3C认可的正式标准,兼容性覆盖几乎所有现代浏览器和Cordova WebView,能满足大部分本地存储需求。你可以直接使用原生API,也可以用封装库比如localForage来简化操作(它封装了IndexedDB、Web SQL等,自动降级,但优先用标准方案)。

举个简单的原生IndexedDB初始化示例:

// 打开或创建数据库
const request = indexedDB.open('sap', 1);

request.onupgradeneeded = function(event) {
  const db = event.target.result;
  // 创建对象仓库
  db.createObjectStore('sapStore', { keyPath: 'id' });
};

request.onsuccess = function(event) {
  const db = event.target.result;
  console.log('IndexedDB初始化成功');
  // 后续可进行增删改查操作
};

request.onerror = function(event) {
  console.log('IndexedDB初始化失败:', event.target.error);
};

2. 使用Cordova SQLite插件(性能更优)

如果你的业务依赖SQL语法操作,推荐使用cordova-sqlite-storage插件,它基于原生SQLite实现,性能比Web SQL更好,也不存在废弃问题。

步骤如下:

  • 安装插件:
cordova plugin add cordova-sqlite-storage
  • 初始化数据库的示例代码:
// 打开或创建数据库
var db = window.sqlitePlugin.openDatabase({
  name: 'sap.db',
  location: 'default' // 数据库存储位置,iOS默认是Documents目录
});

// 执行事务创建表
db.transaction(function(tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS sap_table (id INTEGER PRIMARY KEY, content TEXT)');
}, function(error) {
  console.log('事务执行失败:', error.message);
}, function() {
  console.log('数据库初始化完成');
});

3. 不推荐:强行继续使用Web SQL

虽然有些旧版本的iOS WebView还能勉强运行Web SQL,但苹果已经逐步移除支持,未来版本大概率会完全禁用,所以不建议继续使用这个方案,避免后续兼容性问题。

内容的提问来源于stack exchange,提问作者Navanitha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 21:44:09