Parameters.Add的使用不起作用

时间:2017-12-05 07:58:17

标签: c# .net sql-server visual-studio

我在VS 2010中开发了一个C#程序,它通过读取SQL Server中存储过程提供的参数来生成报告。我有两种调用参数的方法:

command.Parameters.AddWithValue("@SponsorID", strSponsorID);

这完全没问题。但是,当我尝试使用这样的不同方法时:

paramFields.Add("SponsorID", (strSponsorID == "" ? "ALL" : strSponsorID));

它引发错误声明:

  

无法提供参数。

注意:Paramfields是我声明的变量。

SortedList paramFields = new SortedList();

我可以知道可能的问题是什么吗?

1 个答案:

答案 0 :(得分:2)

为什么不在AddWithValue上尝试这样的事情?

command.Parameters.AddWithValue("@SponsorID", string.IsNullOrWhiteSpace(strSponsorID) ? 
                                              "ALL" : strSponsorID);

如果只是NULL检查就更简单了:

command.Parameters.AddWithValue("@SponsorID", strSponsorID ?? "ALL");

虽然直接指定类型并使用Value属性比AddWithValue更好:

command.Parameters.Add("@SponsorID", SqlDbType.VarChar).Value
            = string.IsNullOrWhiteSpace(strSponsorID) ?
            "ALL" : strSponsorID;

但是,您需要先在using System.Data;指令中添加using

Can we stop using AddWithValue() already?