HarmonyOS 鸿蒙Next中关系型数据库的execute是否支持RETURNING子句返回结果?
HarmonyOS 鸿蒙Next中关系型数据库的execute是否支持RETURNING子句返回结果?
尝试使用execute执行一个带returning的insert,希望返回刚插入的行的某个列。
发现就算执行成功execute返回的始终也是-1
2 回复
鸿蒙Next的关系型数据库execute方法目前不支持RETURNING子句返回结果。鸿蒙的RDB接口设计基于SQLite,但做了适配性封装,其execute方法仅返回操作是否成功的布尔值,不提供结果集返回功能。若需获取操作后的数据,需通过query方法二次查询。
更多关于HarmonyOS 鸿蒙Next中关系型数据库的execute是否支持RETURNING子句返回结果?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next的关系型数据库中,当前版本的execute()
方法确实不支持SQLite的RETURNING子句返回结果。这是设计上的限制,execute()
方法主要用于执行不返回结果集的SQL语句,其返回值表示受影响的行数(-1表示执行成功但行数未知)。
如果需要获取INSERT操作后生成的数据,建议采用以下替代方案:
- 先执行INSERT操作
- 然后使用
lastInsertRowid()
获取最后插入的rowid - 再通过SELECT查询获取完整行数据
这种两步操作的方式虽然不如RETURNING子句简洁,但在当前HarmonyOS Next的关系型数据库实现中是最可靠的解决方案。