是否包含带ParameterName的SqlParameter?

时间:2009-09-29 13:14:39

标签: sql vb.net

我遇到过很多次问题,但这次它不起作用。

这就是我想要做的事情(在Visual Studio 2003和VB.NET中)

代码早期:

Private SaveCustomerInformationCommand As System.Data.SqlClient.SqlCommand

然后在设置过程中:

SaveCustomerInformationCommand = New System.Data.SqlClient.SqlCommand("spSaveCustomerInformation")
SaveCustomerInformationCommand.CommandType = Data.CommandType.StoredProcedure
Dim custIdParameter As System.Data.SqlClient.SqlParameter = SaveCustomerInformationCommand.CreateParameter()
custIdParameter.ParameterName = "@CustId"
custIdParameter.SqlDbType = Data.SqlDbType.Int
custIdParameter.Direction = Data.ParameterDirection.Input
SaveCustomerInformationCommand.Parameters.Add(custIdParameter)

然后是:

SaveCustomerInformationCommand.Parameters.Item("@CustId").Value = myValue

我明白了:

System.IndexOutOfRangeException: An SqlParameter with ParameterName '@CustId' is not contained by this SqlParameterCollection.

任何想法/解决方案?

1 个答案:

答案 0 :(得分:2)

AFAIK,“@”在技术上不是参数名称的一部分......而是你在T-SQL中加入的内容,表示后来会出现参数名称。所以我认为你会想要像这样引用它(没有“@”):

SaveCustomerInformationCommand.Parameters.Item("CustId").Value = myValue

当你最初插入参数名时你也可以尝试相同的事情 - 虽然因为你没有在那里得到错误,我怀疑访问者调用是责备,而不是插件调用。