将空值发送到DB

时间:2015-09-02 06:43:12

标签: c# xml ado.net

我正在获取&#34; SystemID&#34;的值。来自xml。即我将值存储在dictionary<string,string>,中,如果&#34; SystemID&#34;我想向数据库发送空值。未在xml中提供,即<SystemID></SystemID> 不存在于xml中。

这是我的代码。但它不起作用。任何想法!

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

2 个答案:

答案 0 :(得分:1)

  

xml中可能存在或不存在<systemID>。如果不存在,则KeyNotFoundException可能存在   那么xml显然不会出现在字典中。然后在那种情况下   我想为数据库分配null。

如果它不在字典中,您将在string.IsNullOrEmpty(attributeValues["systemID"])上获得sqlCommand.Parameters.Add("@SystemID", SqlDbType.Int).Value = attributeValues.ContainsKey("systemID") ? Convert.ToInt32(attributeValues["systemID"]) : (object)DBNull.Value; ,因此假设问题不在您的数据库中,即目标列允许NULL,您可以:

public class Model
{
    public int Foo { get; set; }
}

这将在尝试获取其值之前检查您的字典是否具有您的密钥,防止该异常,并且如果该密钥不存在,则它将指定null。

答案 1 :(得分:0)

XML标记区分大小写。将代码修改为attributeValues["SystemID"]