集合中不包含SqlCommand参数

本文关键字:SqlCommand 参数 包含 集合 | 更新日期: 2023-09-27 18:08:09

我得到以下异常:

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;

我怎么也弄不明白为什么。我试过独立创建参数,然后添加到集合中。我尝试了一些不同的数据类型。我试着给它们重新命名。我不明白为什么这么挑剔

集合中不包含SqlCommand参数

"@catStart"而不是@"catStart",在其他地方也是

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

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

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

格式错误。应该是

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