
回复
血泪总结!从权限报错到跨平台兼容,这些坑你绝对不能踩!
官方文档传送门
👉 一句话打通任督二脉:
把云数据库当成云端Excel工作簿就对了!
实操入口指南:
血泪教训:官方Demo默认只适配手机!用平板调试会直接白屏!
急救三件套:
src/main/module.json5
文件deviceTypes
字段:// 错误写法:只支持手机
"deviceTypes": ["phone"]
// 正确姿势:支持手机+平板
"deviceTypes": ["phone", "tablet"] // 注意逗号别漏!
Build → Rebuild Project
每次修改云端表结构必须同步本地!
完整操作流:
schema.json
AppScope/resources/rawfile/schema.json
(目录不存在就手动创建)(参考官方指南)
遇到这个报错直接心肺停止:
Failed to upsert...403:205525004 // 翻译:你丫没权限!
参考签名指南
想让安卓/iOS也能用鸿蒙云数据库?两种姿势任选:
方案1:SDK集成(适合原生开发)
// 安卓示例代码
AGConnectCloudDB cloudDB = AGConnectCloudDB.getInstance();
CloudDBZoneConfig config = new CloudDBZoneConfig("你的存储区");
cloudDB.openCloudDBZone(config); // 连接云端存储区
方案2:REST API(适合跨平台调用)
# 查询示例
curl -X POST "https://your-api-endpoint" \
-H "Authorization: Bearer <your-token>" \
-d '{"query":"SELECT * FROM User"}'
(接口文档)
经典翻车现场:查数据美滋滋,一修改就报错!
自查九阴真经:
owner
字段添加当前用户ID还在用console.log调试?试试这个:
ohpm install @hadss/debug-db # 一行命令逆天改命
使用宝典:
import {DebugDB} from '@hadss/debug-db';
DebugDB.initialize(context); // 控制台打印访问URL
http://localhost:8080/debug-db
(插件详情)
操作 | 代码示例 | 致命陷阱 | 保命方案 |
---|---|---|---|
增 | rdbStore.insert('user', value) |
主键重复直接抛异常 | 先查询后插入 |
删 | rdbStore.delete(predicates) |
不加where全表删除 | 必须加条件校验 |
改 | rdbStore.update(values, preds) |
批量更新无事务会丢数据 | 用事务包裹+异常回滚 |
查 | rdbStore.query(...) |
结果集未关闭导致内存泄漏 | 必须调用.close() |
经典死锁场景:
// 错误示范!事务嵌套直接凉凉
rdbStore.beginTransaction();
rdbStore.beginTransaction(); // 这里会触发异常!
正确保命姿势:
try {
rdbStore.beginTransaction();
// 操作1...
// 操作2...
await rdbStore.commit();
} catch (e) {
rdbStore.rollback(); // 回滚保平安
throw new Error("事务执行失败: " + e.message);
}
方案一:直接升级,需要实现各版本到目标版本的实现逻辑,优点在于性能好,缺点是逻辑复杂且较难维护。
方案二:一步一步升级到最新版本,只需要实现紧邻版本的升级逻辑,优点在于逻辑简单,便于维护,缺点在于比方案一性能差。
官方示例
血泪总结三原则:
觉得有用请点赞❤️收藏⭐
欢迎在评论区留下你的踩坑经历,我们一起完善这份指南!
#鸿蒙开发 #数据库实战 #程序员生存指南