DbNull.Value和DbNull.Value.ToString()之间的区别

cih*_*a87 1 c# dbnull sqlparameter

我想了解哪种用法是正确的?

if(!string.IsNullOrEmpty(parentID))
   cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));
else
   cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
Run Code Online (Sandbox Code Playgroud)

要么

if(!string.IsNullOrEmpty(parentID))
   cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));
else
   cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));
Run Code Online (Sandbox Code Playgroud)

Sri*_*vel 6

cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));
Run Code Online (Sandbox Code Playgroud)

这会将parentID传递给参数@ParentSesID。

cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
Run Code Online (Sandbox Code Playgroud)

正在将null值传递给参数。

cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));
Run Code Online (Sandbox Code Playgroud)

正在传递等于string.Empty,这在数值数据类型中是不允许的。

cmd.Parameters.Add(new SqlParameter("@ParentSesID", null);
Run Code Online (Sandbox Code Playgroud)

与忽略参数相同。

因此,当您需要通过nullSP时,就必须通过DBNull.Value