VS2019 C#操作SQLite如何根据ID匹配目标行更新指定列
问题定位
你现在写的UPDATE语句缺失定位条件,执行后会直接把TblAddCarParts整张表的所有记录的对应字段都改成你传入的参数值,没法实现单条数据更新。要通过int类型ID匹配目标行,核心是给SQL语句加WHERE筛选条件。
注意:没有加WHERE条件的UPDATE语句会全表覆盖数据,测试前建议先备份数据库,避免误改所有记录无法恢复。
修复步骤
- 先确认你
TblAddCarParts表里存储主键ID的字段名,常见命名为Id、PartId,替换下文代码里的对应字段名即可 - 在原有UPDATE语句末尾追加
WHERE [ID字段名] = @PartId的筛选逻辑 - 给sqlite命令对象新增ID对应的参数,值传入你持有的int类型ID变量
修正后的代码示例
// 请将WHERE后的PartId替换为你表中实际的ID列名 sqlite_cmd.CommandText = "UPDATE TblAddCarParts SET PartName = @PartName, PartQuantity = @PartQuantity, PartPrice = @PartPrice WHERE PartId = @PartId"; sqlite_cmd.Parameters.AddWithValue("@PartName", txtPartName.Text); sqlite_cmd.Parameters.AddWithValue("@PartQuantity", txtAddQuantity.Text); sqlite_cmd.Parameters.AddWithValue("@PartPrice", txtItemCost.Text); // 把yourIntIdVariable替换为你持有的int类型ID变量 sqlite_cmd.Parameters.AddWithValue("@PartId", yourIntIdVariable);
补充说明
- 如果只需要更新部分字段(比如仅修改零件价格),SET子句里只保留需要修改的字段和对应参数就行,不需要把所有字段都列出来
- 执行命令前可以加个判断,确认传入的ID值是有效正整数,避免传空值、0值导致更新不到正确数据
- 推荐用
using块包裹SQLite连接、命令对象,自动释放资源,避免内存泄漏
内容的提问来源于stack exchange,提问作者CluelessGuy
相关产品推荐
相关产品推荐

