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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:39:42