我有以下代码,但是我遇到了问题。在我的While内,必须测试r [“ Varandas”]是否不为空。在特定的imovel_id中,r [“ Varandas”]为null,但仍通过我的代码,然后出现异常错误,因为无法解析为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";
}
}
}
最佳答案
来自数据库的空值具有其自己的特殊类型:
if (r["Varandas"] != DBNull.Value && r["Varandas"] != null)
为了使它更加美观,您可以为DataRow类编写一些简单的函数甚至扩展。