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

如何获取SQLite.swift原生查询返回的行数?

解决方案

方法一:用EXISTS查询直接判断(最高效)

如果你只需要判断是否存在匹配的行,不需要获取实际的class值,推荐用EXISTS子查询。这种方式数据库会在找到第一个匹配行后立即终止查询,性能最优:

let hasMatchingRow = try db!.scalar("""
    SELECT EXISTS(SELECT 1 FROM "character" WHERE character_id = ?)
""", character.id) as! Bool

if hasMatchingRow {
    // 存在符合条件的行
} else {
    // 无匹配行
}

方法二:基于原有查询快速判断

如果之后还需要使用查询返回的class数据,可以通过Statement的next()方法快速判断是否有结果:

let statement = try db!.prepare("""
    SELECT class from "character" where character_id = ?
""", character.id)

if statement.next() {
    // 存在匹配行,可在此获取第一个结果:
    let className = statement[0] as! String
    // 若后续需要重新遍历结果,调用重置方法:
    statement.reset()
} else {
    // 无匹配行
}

注意

避免直接使用statement.count获取行数——对于SELECT查询,这个属性需要先遍历所有结果才能得到准确值,完全不符合高效需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:01:10