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操作后生成的数据,建议采用以下替代方案:

  1. 先执行INSERT操作
  2. 然后使用lastInsertRowid()获取最后插入的rowid
  3. 再通过SELECT查询获取完整行数据

这种两步操作的方式虽然不如RETURNING子句简洁,但在当前HarmonyOS Next的关系型数据库实现中是最可靠的解决方案。

回到顶部