我遇到过很多次问题,但这次它不起作用。
这就是我想要做的事情(在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.
任何想法/解决方案?
答案 0 :(得分:2)
AFAIK,“@”在技术上不是参数名称的一部分......而是你在T-SQL中加入的内容,表示后来会出现参数名称。所以我认为你会想要像这样引用它(没有“@”):
SaveCustomerInformationCommand.Parameters.Item("CustId").Value = myValue
当你最初插入参数名时你也可以尝试相同的事情 - 虽然因为你没有在那里得到错误,我怀疑访问者调用是责备,而不是插件调用。