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

Android SQLite rawQuery校验账号密码时WHERE子句语法错误如何解决

核心语法错误

  1. 重复使用WHERE关键字:SQL语法规定一条SELECT语句只能有一个WHERE子句,多个过滤条件需要用AND或者OR逻辑运算符拼接,不能连续写两个WHERE。你拼接后的实际执行语句为SELECT * FROM Employee WHERE EMPLOYEE_EMAIL = 12 WHERE EMPLOYEE_PASSWORD=1234,两个WHERE连用直接触发语法报错。
  2. 字符串参数缺少单引号包裹:邮箱和密码都是字符串类型的值,直接拼接进SQL语句时需要用单引号把值括起来,否则SQLite会把输入的内容识别为字段名,后续也会触发语法错误。
  3. 安全风险:直接拼接用户输入构造SQL语句存在严重的SQL注入风险,用户可以构造特殊输入绕过验证甚至篡改数据库数据,禁止在生产环境使用这种写法。

正确写法示例

// 使用参数化查询(?作为占位符),自动处理参数格式、规避注入风险
String queryEmail = "SELECT * FROM " + TABLE_NAME + " WHERE " + col_2 + " = ? AND " + col_3 + " = ?";
Cursor cr = db.rawQuery(queryEmail, new String[]{email, password});
return cr.moveToFirst();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:57:03