2012-03-21 63 views
11
 DbParameter param = comm.CreateParameter(); 
     param = comm.CreateParameter(); 
     param.ParameterName = "@StaffId"; 
     if (!string.IsNullOrEmpty(activity.StaffId)) 
      param.Value = activity.StaffId; 
     param.DbType = DbType.String; 
     comm.Parameters.Add(param); 

上述不起作用(很明显),对象没有实例化。我试图在不填充StaffId时将NULL插入到数据库中。我怎样才能做到这一点?从C#中插入NULL到SQL DB DbCommand

+1

可以使用DBNull.Value – 2012-03-21 09:23:55

+0

完美!如果您将此作为答案发布,我会将其标记为正确。 – SkonJeet 2012-03-21 09:27:11

+0

现在完成:)谢谢 – 2012-03-21 09:28:15

回答

23

当你需要传递NULL作为参数传递给存储过程可以使用DBNull.Value。

param.Value = DBNull.Value; 

或者您可以使用而不是你的if运营商:

param.Value = !string.IsNullOrEmpty(activity.StaffId) ? activity.StaffId : (object)DBNull.Value; 
+1

感谢编辑安德烈 - 欣赏它。把它当作一个对象似乎很疯狂(对我来说)。 – SkonJeet 2012-03-21 09:56:12

7

尝试DBNull.Value

if (!string.IsNullOrEmpty(activity.StaffId)) 
    param.Value = activity.StaffId; 
else 
    param.Value=DBNull.Value; 
+0

有没有一种使用?如果else语句在这里,一种简写的运算符?它似乎不喜欢字符串/ DBNull.Value转换!? – SkonJeet 2012-03-21 09:33:46

+1

试试这个:param.Value =!string.IsNullOrEmpty(activity.StaffId)? activity.StaffId :(对象)DBNull.Value; – 2012-03-21 09:41:10

3

你可以使用DBNull.Value

param.Value = DBNull.Value;