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

SQLite查询用户存在问题:为何查询语句返回计数为0?

问题分析与解决

首先,你的核心错误在于第二个查询找错了表!

  • 第一个查询SELECT * FROM sqlite_master ...是完全正确的:sqlite_master是SQLite的系统表,专门存储数据库中表、视图、索引等对象的元数据,所以你能查到UserTable存在,返回计数1是正常的。
  • 但第二个查询还在sqlite_master里找NameOfUser字段就大错特错了!sqlite_master里根本没有这个字段——这个字段是你自己的UserTable中存储用户数据的字段,不属于系统表的结构。所以无论你有没有添加目标用户,这个查询都永远会返回0。

正确的查询方式

要验证目标用户是否存在,你应该直接查询你的业务表UserTable,而不是系统表:

// 正确的查询:直接在UserTable中匹配用户名字段
Int32 userCount = database.Query(map, "SELECT * FROM UserTable WHERE NameOfUser = @userName", ps).Count;

额外的重要提醒:杜绝SQL注入风险

你原来的代码用字符串拼接'" + personsName + "'传递参数的方式非常危险,很容易引发SQL注入攻击,还可能因为名字里包含单引号等特殊字符导致SQL语法错误。你代码里已经有ps参数集合,应该用参数化查询的方式传递personsName,比如:

// 先向参数集合中添加参数(示例,根据你使用的SQLite客户端调整)
ps.Add(new SQLiteParameter("@userName", personsName));
// 再执行上面的正确查询语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:37:29