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

MS Access迁移至SQL Server时C#参数化SQL查询无返回行求助

问题排查与解决方案

1. 首要错误:参数被单引号包裹变成字符串常量

你当前的WHERE条件写法为:

WHERE Incident_Full_Num = '@Incident_Full_Num'

此处给参数加上单引号后,SQL会直接将'@Incident_Full_Num'识别为普通字符串常量,和Incident_Full_Num字段做匹配,而不会读取参数传入的实际值,自然无法匹配到对应数据。
修正方案:删除参数两侧的单引号即可:

WHERE Incident_Full_Num = @Incident_Full_Num

2. 次要问题:冗余参数导致匹配错位

OleDb的参数规则是按传入的先后顺序匹配,不识别参数名称。你当前的查询仅用到了@Incident_Full_Num这1个参数,但额外传入了9个查询中完全没有用到的参数,会直接导致参数匹配错位,进一步造成查询无结果。
修正方案:删除所有查询未用到的参数,仅保留需要的参数即可:

List<OleDbParameter> l = new List<OleDbParameter>();
l.Add(new OleDbParameter("@Incident_Full_Num", mi.incident_full_number));

可选优化建议

你已经将数据库迁移到SQL Server,建议将OleDb相关类替换为SQL Server原生的SqlConnection、SqlCommand、SqlParameter,原生驱动性能更高,且支持按参数名匹配,不会出现参数顺序错位的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:54:02