2015-09-02 38 views
0

我從XML獲取「SystemID」的值。即我將值存儲在dictionary<string,string>,中如果xml中沒有提供「SystemID」,即xml中不存在<SystemID></SystemID> ,我希望向DB發送null。向數據庫發送空值

這是我的代碼。但它不起作用。有任何想法嗎!

sqlCommand.Parameters.Add("@SystemID", SqlDbType.Int).Value = string.IsNullOrEmpty(attributeValues["systemID"]) ? (object)DBNull.Value : Convert.ToInt32(attributeValues["systemID"]); 
+2

你有什麼異常嗎? –

+1

可能重複的[如何將null分配給sqlparameter?](http://stackoverflow.com/questions/4555935/how-to-assign-null-to-a-sqlparameter) – wudzik

+0

'attributeValues'字典是否總是包含'systemID'鍵,即使它的值可能爲空? –

回答

1

<systemID>可以或可以不存在於xml.If它不是在 XML那顯然不會在字典中。那麼在這種情況下 我想分配給數據庫空值。

如果它不會在字典中,你會得到一個KeyNotFoundExceptionstring.IsNullOrEmpty(attributeValues["systemID"]),所以假設這個問題是不是在你的數據庫即目標列允許NULL,您可以:

sqlCommand.Parameters.Add("@SystemID", SqlDbType.Int).Value = 
    attributeValues.ContainsKey("systemID") ? 
    Convert.ToInt32(attributeValues["systemID"]) : 
    (object)DBNull.Value; 

這會檢查你的字典是否有你的密鑰,然後試圖獲取它的值,防止這個異常,如果密鑰不存在,它將分配空值。

+0

謝謝!那工作。 – Ninja

0

XML標記區分大小寫。修改代碼到attributeValues["SystemID"]