C# 更新IDbCommand的值';s参数

C# 更新IDbCommand的值';s参数,c#,sql,ado.net,C#,Sql,Ado.net,我想在IDbCommand参数确实存在时更新该参数的值 public void AddParameter(IDbCommand command, string name, object value) { var parameter = command.CreateParameter(); parameter.ParameterName = "@" + name; parameter.Value = value; co

我想在
IDbCommand
参数确实存在时更新该参数的值

    public void AddParameter(IDbCommand command, string name, object value)
    {
        var parameter = command.CreateParameter();
        parameter.ParameterName = "@" + name;
        parameter.Value = value;
        command.Parameters.Add(parameter);
    }
我尝试将其添加到我的方法中,但它不适用于
IDBCommand
,因为它是
SqlCommand
选项

if (command.Parameters.Contains("@" + name))
{
     command.Parameters["@" + name].Value = value;
}

您需要将其强制转换为
IDbDataParameter
,因为
IDataParameterCollection
索引器返回一个
对象
类型:

var parameterName = "@" + name;
if (command.Parameters.Contains(parameterName))
{
     var parameter = command.Parameters[parameterName] as IDbDataParameter;
     parameter.Value = value;
}

您需要将其强制转换为
IDbDataParameter
,因为
IDataParameterCollection
索引器返回一个
对象
类型:

var parameterName = "@" + name;
if (command.Parameters.Contains(parameterName))
{
     var parameter = command.Parameters[parameterName] as IDbDataParameter;
     parameter.Value = value;
}

请更具体地说,然后“不工作”。发生了什么或没有发生什么?IDBCommand参数没有此选项
command.Parameters[“@”+name]。Value
它看起来应该有:请比“不工作”更具体一些。发生了什么或没有发生什么?IDBCommand参数没有此选项
command.Parameters[“@”+name]。Value
看起来应该有: