测试某些值是否为null

Luc*_*tos 2 c#

我有以下代码,但我遇到了问题.在我的While中,必须测试r ["Varandas"]是否为空.在一个特定的imovel_id中,r ["Varandas"]为空,但仍然通过我的代码,然后我得到一个异常错误,因为无法解析为r ["Varandas"]因为为null,但为什么他通过通过我的While循环中的第一个IF?

        string s = "SELECT * "
            + "FROM San_Imovel_Caracteristica "
            + "WHERE Imovel_Id = " + imovel_id + " ";

        SqlConnection c = new SqlConnection(conn.Con);
        SqlCommand cmd = new SqlCommand(s, c);
        c.Open();
        SqlDataReader r = cmd.ExecuteReader();

        while (r.Read())
        {
            if (r["Varandas"] != null)
            {
                if (Convert.ToInt32(r["Varandas"].ToString()) > 0)
                {
                    XmlElement itemImovel1 = doc.CreateElement("itemImovel");
                    caracteristicasImovel.AppendChild(itemImovel1);
                    itemImovel1.InnerText = "varanda";
                }
            }
         }
Run Code Online (Sandbox Code Playgroud)

Sha*_*ard 7

数据库中的null值有自己的特殊类型:

if (r["Varandas"] != DBNull.Value && r["Varandas"] != null)
Run Code Online (Sandbox Code Playgroud)

为了使它更优雅,您可以为DataRow类编写一些简单的函数甚至扩展.