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

Angular中如何获取SQLite executeSql的返回值——EXISTS查询结果的取值方法

获取SQL EXISTS查询返回值的解决方案

嘿,我来帮你搞定这个问题!你现在用EXISTS查询判断记录是否存在,结果返回的对象键是一整串SQL语句,直接按键名取值确实很麻烦对吧?下面给你几个实用的解决办法:

方法1:给查询结果起别名(最优解)

这是最稳妥的方式,修改你的SQL语句,给EXISTS的结果指定一个清晰的别名,比如recordExists:

this.offlineDBService.db
.executeSql(
 `SELECT EXISTS (SELECT Id FROM Session WHERE Id = ${Id}) AS recordExists`,
 []
)
.then((val) => {
 const exists = val.rows.item(0).recordExists;
 console.log("是否存在记录:", exists); // 这里会输出1或0
})

这样返回的对象键就变成了recordExists,直接通过这个固定的键名就能拿到你要的1或0,后续就算SQL语句有调整,只要别名不变,取值逻辑就不用改。

方法2:直接提取对象的第一个值(无需修改SQL)

如果暂时不想改动SQL语句,也可以用JavaScript的对象方法直接提取值:

用Object.values()

this.offlineDBService.db
.executeSql(
 `SELECT EXISTS (SELECT Id FROM Session WHERE Id = ${Id})`,
 []
)
.then((val) => {
 const resultObj = val.rows.item(0);
 const exists = Object.values(resultObj)[0];
 console.log("是否存在记录:", exists);
})

用Object.keys()

this.offlineDBService.db
.executeSql(
 `SELECT EXISTS (SELECT Id FROM Session WHERE Id = ${Id})`,
 []
)
.then((val) => {
 const resultObj = val.rows.item(0);
 const key = Object.keys(resultObj)[0];
 const exists = resultObj[key];
 console.log("是否存在记录:", exists);
})

这两种方法都能直接拿到对象里的第一个值,也就是你要的1或0,适合快速临时解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:17:27