我在VS 2010中开发了一个C#程序,它通过读取SQL Server中存储过程提供的参数来生成报告。我有两种调用参数的方法:
command.Parameters.AddWithValue("@SponsorID", strSponsorID);
这完全没问题。但是,当我尝试使用这样的不同方法时:
paramFields.Add("SponsorID", (strSponsorID == "" ? "ALL" : strSponsorID));
它引发错误声明:
无法提供参数。
注意:Paramfields
是我声明的变量。
SortedList paramFields = new SortedList();
我可以知道可能的问题是什么吗?
答案 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
。