2012-03-21 67 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;