考虑这个例子:
MyParameters.Name = "Paul";
MyParameters.Nickname = String.Empty;
ExecuteStoredProcedure(MyStoredProcedure, MyParameters);
当我的存储过程执行时,它会运行这样的东西吗?
MyStoredProcedure 'Paul',''
所以,我的问题是:C# String.Empty
等于Database ''
?
PS:我正在使用SQL Server
答案 0 :(得分:5)
是的,空字符串作为空字符串发送。请参阅,值已按预期转换和发送。例如,如果您需要发送null
,那么您可以像这样设置Nickname
:
MyParameters.Nickname = null;
您的代码也相当于:
MyParameters.Nickname = "";
答案 1 :(得分:3)
String.Empty
在语义上与C#中的""
相同,这是一个零长度的非空字符串(无论完全相同是否更复杂,并且取决于你正在使用的运行时版本。在SQL中,''
是一个零长度的非空字符串。是的,string.Empty
,String.Empty
和""
在逻辑上等同于''
。
答案 2 :(得分:0)
如上所述,String.Empty是相同的“”。
另一个选项,将参数声明为null或存储过程中的“”,如..
create procedure spname
{
parameter1 int = null, parameter2 varchar(50) = null, parameter3 varchar(50) = ""
}
as
begin
.....
end
从c#传递参数时,如果你没有传递,那么当你声明参数的右边时它将自动变为空白(“”)或null