SqlCommand参数不包含在集合中

时间:2014-06-11 23:14:06

标签: c# sql

我收到以下异常:

An exception of type 'System.IndexOutOfRangeException' occurred 
in System.Data.dll but was not handled in user code

Additional information: An SqlParameter with ParameterName 'catStart' 
is not contained by this SqlParameterCollection.

运行此代码时:

var command = new SqlCommand();
command.Parameters.Add("@startSku", SqlDbType.VarChar);
command.Parameters.Add("@endSku", SqlDbType.VarChar);

command.Parameters.Add("@catStart", SqlDbType.VarChar);
command.Parameters.Add("@catEnd", SqlDbType.VarChar);

command.Parameters.Add("@active1", SqlDbType.VarChar);
command.Parameters.Add("@active2", SqlDbType.VarChar);

command.Parameters["@startSku"].Value = 
    string.IsNullOrEmpty(startSku) 
    ? SqlHelpers.MinString 
    : startSku;

command.Parameters["@endSku"].Value = 
    string.IsNullOrEmpty(endSku) 
    ? SqlHelpers.MaxString 
    : endSku;

command.Parameters[@"catStart"].Value = 
    string.IsNullOrEmpty(startCategory)
    ? SqlHelpers.MinString
    : startCategory;

command.Parameters[@"catEnd"].Value = 
    string.IsNullOrEmpty(endCategory)
    ? SqlHelpers.MaxString
    : endCategory;

command.Parameters[@"active1"].Value = isActive;
command.Parameters[@"active2"].Value = checkIsActive ? isActive : !isActive;

抛出异常:

command.Parameters[@"catStart"].Value = 
    string.IsNullOrEmpty(startCategory)
    ? SqlHelpers.MinString
    : startCategory;

我不能为我的生活找出原因。我已经尝试独立创建参数,然后添加到集合中。我尝试了一些不同的数据类型。我尝试重命名它们。我不明白为什么这是挑剔的。

3 个答案:

答案 0 :(得分:1)

"@catStart"代替@"catStart"以及其他地方。

答案 1 :(得分:0)

您的参数格式不正确。像,

command.Parameters[@"catStart"].Value =

应该是

command.Parameters["@catStart"].Value = 
command.Parameters["@catEnd"].Value = 
command.Parameters["@active1"]
command.Parameters["@active2"]
command.Parameters["@catStart"]

答案 2 :(得分:0)

格式不正确。它应该是

command.Parameters["@catStart"].Value =

command.Parameters["@catEnd"].Value = 

command.Parameters["@active1"]