将String.Empty发送到存储过程

时间:2014-05-13 13:39:30

标签: c# sql sql-server string stored-procedures

考虑这个例子:

MyParameters.Name = "Paul";
MyParameters.Nickname = String.Empty;

ExecuteStoredProcedure(MyStoredProcedure, MyParameters);

当我的存储过程执行时,它会运行这样的东西吗?

MyStoredProcedure 'Paul',''

所以,我的问题是:C# String.Empty等于Database ''

PS:我正在使用SQL Server

3 个答案:

答案 0 :(得分:5)

是的,空字符串作为空字符串发送。请参阅,值已按预期转换和发送。例如,如果您需要发送null,那么您可以像这样设置Nickname

MyParameters.Nickname = null;

您的代码也相当于:

MyParameters.Nickname = "";

答案 1 :(得分:3)

String.Empty在语义上与C#中的""相同,这是一个零长度的非空字符串(无论完全相同是否更复杂,并且取决于你正在使用的运行时版本。在SQL中,''是一个零长度的非空字符串。是的,string.EmptyString.Empty""在逻辑上等同于''

答案 2 :(得分:0)

如上所述,String.Empty是相同的“”。

另一个选项,将参数声明为null或存储过程中的“”,如..

    create procedure spname 
{  
      parameter1 int = null, parameter2 varchar(50) = null, parameter3 varchar(50) = ""   
} 

as

begin

.....

end

从c#传递参数时,如果你没有传递,那么当你声明参数的右边时它将自动变为空白(“”)或null