发送字符串.对存储过程为空

本文关键字:存储过程 字符串 | 更新日期: 2023-09-27 18:03:20

考虑这个例子:

MyParameters.Name = "Paul";
MyParameters.Nickname = String.Empty;
ExecuteStoredProcedure(MyStoredProcedure, MyParameters);

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

MyStoredProcedure 'Paul',''

那么,我的问题是:C# String.Empty等于Database '' ?

p。:我使用SQL Server

发送字符串.对存储过程为空

是,空字符串作为空字符串发送。看,这些值被翻译并按预期发送。例如,如果您需要发送null,那么您可以这样设置Nickname:

MyParameters.Nickname = null;

你的代码也相当于:

MyParameters.Nickname = "";

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

如上所述,字符串。空的是相同的"。

另一个选项,在存储过程中声明参数为null或",如.

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

当你从c#传递参数时,如果你不传递,那么它会自动取空白(")或null作为你在参数的右侧声明