为何VB.NET中WITH语句内无法为SQL存储过程添加参数?
问题解答
你猜的没错,核心原因就是VB.NET的对象初始化器(也就是你用的With {...}语法)只支持属性/字段的赋值操作,而.Parameters.AddWithValue()是一个方法调用,不是属性赋值(没有=来给某个属性设值),所以没法放在初始化器的大括号里。
补充说明
对象初始化器的设计目的是简化对象创建时的属性批量设置,语法要求每一项必须是 .属性名 = 值 的形式——比如你写的 .CommandType = CommandType.StoredProcedure 就是符合要求的属性赋值。而方法调用是执行一段逻辑,不属于属性赋值范畴,自然不能放在初始化器的大括号内。
可选的紧凑写法
如果想把参数添加的逻辑和对象创建写得更紧凑,可以试试这两种方式:
- 链式调用参数添加方法:
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)
- 利用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
相关产品推荐
相关产品推荐

