【问题标题】:An SqlParameter with ParameterName is not contained by this SqlParameterCollection此 SqlParameterCollection 不包含具有 ParameterName 的 SqlParameter
【发布时间】:2011-10-28 17:01:02
【问题描述】:

不知道为什么我总是得到

此不包含具有 ParameterName 的 SqlParameter SqlParameterCollection

当我在其他方法中像这样很好地拉动和调用 procs 时。

proc 在那个外壳中确实有一个参数@EqId。

List<string> equipTypes = new List<string>();

Database db = DatabaseFactory.CreateDatabase("OurDBName");
DbCommand cmd = db.GetStoredProcCommand("Get_EquipTypes_By_ID");

db.DiscoverParameters(cmd);
cmd.Parameters["@EqId"].Value = equipID;

using (IDataReader objReader = db.ExecuteReader(cmd))
{
   while (objReader.Read())
      equipTypes.Add(DataUtility.GetStringFromReader(objReader, "Data"));
}

【问题讨论】:

  • 为什么还要使用 DiscoverParameters?那是一个额外的往返,但你已经知道这个名字了。那是用于探测 procs 的工具。

标签: c# sql parameter-passing


【解决方案1】:

像这样添加参数

 cmd.Parameters.AddWithValue("@EqId", equipID);

我认为这是最干净的方法,好吧:)

【讨论】:

    【解决方案2】:

    首先,当您知道参数时,我不会发现参数。由于您正在执行此操作,请检查参数集合并确保正在发现参数。如果你明白这一点,我的目标是更像 Greg 所建议的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      相关资源
      最近更新 更多