HarmonyOS鸿蒙Next SDK功能和问题建议讨论:关系型数据库Sqlite3开发接口
HarmonyOS鸿蒙Next SDK功能和问题建议讨论:关系型数据库Sqlite3开发接口 最近在鸿蒙next开发中,数据库相关接口使用遇到一些问题,提出一些改进建议。
数据库接口执行报错信息不够详细
根据官方文档有很多报错指引说明,不过像具体的语法错误就没有具体报错。只有一个通用错误,也没有指出是语法的哪里错误。希望能像其它数据库工具那样能报出更具体一些的错误信息,如syntax错误,唯一错误冲突等更具体的报错,不然是语法错误还是什么地方出错难以排查。
默认insert接口没有触发唯一索引异常
store.batchInsertSync
如批量写入接口写入,如果数据库有唯一约束,数据会写入成功,但是只会保存最后一条,也就是被替换。
新版本API有batchInsertWithConflictResolutionSync方法可以自己控制,不过需要加参数,而不是默认行为。这样的api设计和数据库的insert默认语句感觉不一致,sqlite语句,默认是要报错的,加 insert or xx才是加参数的行为。
API 18以下版本就只能手写sql插入语句处理此问题。
INSERT INTO table_name
INSERT OR REPLACE INTO table_name
希望能增加sql执行语句打印配置功能
在使用relationalStore.RdbPredicates接口方法生成一些查询时,有时候需要明确复杂的and和or最终生成的sql是否准确,想调试不知道怎么查看最终sql语句。要是能增加一个sql最终语句在控制台调试时可打印就更方便了。
另外就是希望IDE(DevECO Studio)能增加API方法版本检测和提示。
类似Deprecated和系统能力一样,有时候靠自我感觉和IDE的自动提示写了一些方法,在低版本API系统运行就报错。 根据项目配置的最低API版本兼容配置项和使用的系统API方法,希望IDE能检查,要么提示要么在编译时直接不给通过,不然开发者难以做到每个api方法都要去核对文档里的版本号。
// API 18才支持的方法 --开发时没仔细看文档,直到低版本运行时出现报错但报错信息没有直观提示是API版本问题,只有一个not callable
// let rows = store.batchInsertWithConflictResolutionSync(AnnOperationParamDefinitionEntity.TABLE_NAME,
// 为了兼容 API 12
valuesBucketList, relationalStore.ConflictResolution.ON_CONFLICT_FAIL) // since 18
let rows = store.batchInsertSync(AnnOperationParamDefinitionEntity.TABLE_NAME, valuesBucketList)
更多关于HarmonyOS鸿蒙Next SDK功能和问题建议讨论:关系型数据库Sqlite3开发接口的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS Next的关系型数据库接口基于ArkTS开发,支持SQLite本地数据存储。提供关系型数据库(RDB)API,包括数据库创建、数据增删改查、事务处理等功能。开发者可通过@ohos.data.relationalStore模块调用相关接口,实现数据持久化管理。
更多关于HarmonyOS鸿蒙Next SDK功能和问题建议讨论:关系型数据库Sqlite3开发接口的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


