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

SQL脚本在Query Builder中可运行但执行时提示@Vendor参数未提供报错

报错根因

这个错误是.NET的数据库访问组件的默认参数校验逻辑导致的:当你没有给@Vendor参数显式赋值,或者传入了C#层面的null值时,组件会默认判定该参数「未提供」,而不是自动将空值转换为SQL识别的DBNull,因此触发参数缺失的报错。Query Builder中能正常执行是因为测试时工具自动为空参数补了DBNull值,绕过了校验。

解决方案

你可以根据自己的代码实现场景二选一:

方案1:调整参数赋值逻辑(推荐,不改动原有SQL逻辑)

  • 如果是用Visual Studio自带的TableAdapter配置的查询:找到对应查询的@Vendor参数配置项,将ConvertNullToDBNull属性设置为True即可,用户输入为空时工具会自动传入DBNull,触发@Vendor IS NULL的条件返回全量数据。
  • 如果是代码中手动构造SQL命令:当用户输入为空时,显式给参数赋值DBNull.Value,示例代码如下:
// vendorInput为用户输入的检索关键词
object paramValue = string.IsNullOrWhiteSpace(vendorInput) ? DBNull.Value : vendorInput.Trim();
command.Parameters.AddWithValue("@Vendor", paramValue);

方案2:调整SQL语句规避参数校验问题

如果不想修改参数配置,可以直接改写查询语句,兼容空参数/空输入的场景:

SELECT WorkstationID, Vendor, SoftwareName 
FROM Licenses 
WHERE Vendor LIKE '%' + ISNULL(@Vendor, '') + '%' OR ISNULL(@Vendor, '') = ''

该写法下即使参数传入空字符串或者NULL,都会触发第二个条件返回全部行,完全匹配你的业务需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:54:03