我正在获取&#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"]);
答案 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"]