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

SQLite数据库通过不同方法更新两列时仅一列生效问题求助

问题定位与原因整理

1. 首要致命错误:建表代码变量名不匹配

你定义的建表SQL语句存储在变量CreateMainTable中,但实际执行建表的时候调用的是:

db.execSQL(CreatePrimaryTable);

两个变量名完全不一致,如果这不是你贴代码的笔误,而是实际运行的代码,那么你实际创建的表结构和你预期的完全不符,会导致后续读写逻辑异常。如果确认是笔误,继续看下面的其他问题。

2. 更新匹配条件使用不当

你两次更新都用了LIKE关键字匹配SURVEY_ID:

String selection = SURVEY_ID + " LIKE ?";

LIKE是模糊匹配关键字,如果你的SURVEY_ID中包含%、_这类通配符,会出现匹配异常,甚至匹配到错误的行。如果SURVEY_ID是精确匹配的场景,直接替换为=即可:

String selection = SURVEY_ID + " = ?";

3. 多实例读写冲突

如果你在两个不同的Activity中分别创建了新的SQLiteOpenHelper实例,没有使用单例模式管理数据库连接,可能会出现数据库锁、读写不同步的问题,后发起的更新操作会因为无法获取数据库写入权限执行失败。

4. 重复ID匹配异常

你没有给SURVEY_ID加唯一约束,如果你插入了多条相同SURVEY_ID的记录,第一次更新可能修改了第一条匹配到的记录,第二次更新可能匹配到了其他记录,导致你读取第一条记录的时候看不到第二次更新的内容。

排查建议

  • 先看两次更新方法的Log输出中count的值:如果第二次更新的count为0,说明没有匹配到对应的行,优先检查传入的ID是否和数据库中存储的SURVEY_ID完全一致,以及匹配条件是否正确。
  • 如果count为1说明更新已经执行成功,优先检查你读取数据的逻辑是否有问题,是不是读取了错误的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:27:04