SQLite 数据库参数数量超限导致的崩溃问题:SQLiteException: too many SQL variables
2026/8/4 3:22:55 网站建设 项目流程
infoDAO.deleteByInfoIds(ids);
  • 在 Android 开发中,使用 Room 时,执行上述代码时,出现如下错误信息
Caused by: android.database.sqlite.SQLiteException: too many SQL variables (code 1 SQLITE_ERROR): , while compiling: DELETE FROM Info WHERE infoId IN (?,?,?,?,?...
问题原因
  1. SQLite 数据库参数数量超限导致的崩溃问题

  2. SQLite 数据库在编译 SQL 语句时,对绑定参数(?占位符)的数量有硬性上限,默认是 999 个SQLITE_MAX_VARIABLE_NUMBER

  • 参考文档:https://sqlite.org/limits.html
处理策略
  • 分批删除,将大的 ID 列表拆分成多个小批次,例如,每批 500 个,循环执行删除,直到全部删完
intbatchSize=500;inttotalSize=ids.size();for(inti=0;i<totalSize;i+=batchSize){intend=Math.min(i+batchSize,totalSize);List<Integer>batchIds=ids.subList(i,end);infoDAO.deleteByInfoIds(batchIds);}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询