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

为何VB.NET中WITH语句内无法为SQL存储过程添加参数?

问题解答

你猜的没错,核心原因就是VB.NET的对象初始化器(也就是你用的With {...}语法)只支持属性/字段的赋值操作,而.Parameters.AddWithValue()是一个方法调用,不是属性赋值(没有=来给某个属性设值),所以没法放在初始化器的大括号里。

补充说明

对象初始化器的设计目的是简化对象创建时的属性批量设置,语法要求每一项必须是 .属性名 = 值 的形式——比如你写的 .CommandType = CommandType.StoredProcedure 就是符合要求的属性赋值。而方法调用是执行一段逻辑,不属于属性赋值范畴,自然不能放在初始化器的大括号内。

可选的紧凑写法

如果想把参数添加的逻辑和对象创建写得更紧凑,可以试试这两种方式:

  1. 链式调用参数添加方法:
Dim command As New SqlCommand("usp_EXT_101_ConsolidatedGroupKickOff", connection) With {
    .CommandType = CommandType.StoredProcedure,
    .CommandText = "Do something"
}
command.Parameters.AddWithValue("@someVar", strVarName) _
                  .AddWithValue("@anotherVar", anotherValue)
  1. 利用VB.NET的多行语句特性合并代码(可读性稍弱,不推荐大量使用):
Dim command As New SqlCommand("usp_EXT_101_ConsolidatedGroupKickOff", connection) With {
    .CommandType = CommandType.StoredProcedure,
    .CommandText = "Do something"
} : command.Parameters.AddWithValue("@someVar", strVarName)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:55:17