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

C#操作Access数据库执行UPDATE提示Data Not Updated问题求助

Access数据库UPDATE操作无匹配行问题排查及解决方案

核心故障原因

OleDb访问Access数据库时,不识别参数名称,仅按照参数添加的顺序与SQL语句中参数出现的顺序一一对应匹配。
你的UPDATE语句中参数的出现顺序为:@tareekh、@company、@party、@hukam、@kg、@PCS、@pprice、@cprice、@wprice、@rprice、@billn、@quantity、@namee,但代码中首个添加的参数是@namee,导致所有参数完全错位,WHERE条件实际匹配的数值错误,找不到符合条件的更新行,因此返回0行受影响进入Data Not Updated分支。

修复方案

1. 调整参数添加顺序(必改)

将参数添加顺序调整为与SQL语句中参数出现顺序完全一致,SET部分的参数在前,WHERE条件的参数放在最后:

OleDbCommand cmmd = new OleDbCommand(query, connection);
// 顺序与UPDATE语句中参数出现顺序完全对应
cmmd.Parameters.AddWithValue("@tareekh", ddate);
cmmd.Parameters.AddWithValue("@company", ccompany);
cmmd.Parameters.AddWithValue("@party", pparty);
cmmd.Parameters.AddWithValue("@hukam", oorder);
cmmd.Parameters.AddWithValue("@kg", kkg);
cmmd.Parameters.AddWithValue("@PCS", PpCS);
cmmd.Parameters.AddWithValue("@pprice", ppprice);
cmmd.Parameters.AddWithValue("@cprice", ccprice);
cmmd.Parameters.AddWithValue("@wprice", wwprice);
cmmd.Parameters.AddWithValue("@rprice", rrprice);
cmmd.Parameters.AddWithValue("@billn", bbilln);
cmmd.Parameters.AddWithValue("@quantity", qquantity);
// WHERE条件的参数放在最后
cmmd.Parameters.AddWithValue("@namee", nname);

2. 可选优化排查点

如果调整顺序后仍有问题,可逐一排查以下场景:

  • 数据类型匹配:如果tareekh是日期类型、kg/price/quantity是数值类型,不要直接传入字符串,需先转换为对应数据类型再传参,避免隐式转换导致匹配失败
  • 确认匹配记录存在:执行更新前可先执行SELECT COUNT(*) FROM prod WHERE namee=?传入nname,验证数据库中确实存在对应匹配记录
  • 确认数据库文件路径:|DataDirectory|默认指向程序运行目录,调试时修改的源码目录下的accdb文件和运行时bin/Debug下的accdb副本是两个文件,可临时改为绝对路径测试验证
  • 关键字转义:如果PCS等字段名是Access保留关键字,可在SQL语句中用方括号包裹,例如[PCS]=@PCS

内容的提问来源于stack exchange,提问作者Dubai Pallets Store

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:57:03