日期:2014-05-17  浏览次数:20419 次

如果 DAL层 数据类型转化错误怎么办?
假如在DAL层中有这样的代码:
House house = new House(HouseId);
SqlDataReader reader = ...........

house.ExpiredDate = Convert.ToDateTime(reader["ExpiredDate"]);

那么因为reader["ExpiredDate"]为dbnull, 或者ExpiredDate干脆就不是日期型的,比如在数据库端错误的设置为字符串型的。 

所以在执行Convert.ToDateTime(reader["ExpiredDate"])这里就会出错。  

那么BLL层只有捕获到这个错误,进而展现给UI层吗

------解决方案--------------------
可以自己扩展一个容错的方法,如果是正确的时间类型的数据就返回正确的值,如果不是就返回一个空的DateTime类型的结构:
C# code


       public static DateTime GetDateTime(object obj)
        {
            return obj == null || obj == DBNull.Value ? new DateTime() : Convert.ToDateTime(obj);
        }
DateTime dt = GetDateTime(reader["ExpiredDate"]);