首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎样将dateTime类型的null转换其它类型解决方法

2012-03-11 
怎样将dateTime类型的null转换其它类型数据库中时间字段inTime和OutTime,允许为空,从数据库中获取数据时,

怎样将dateTime类型的null转换其它类型
数据库中时间字段inTime和OutTime,允许为空,从数据库中获取数据时,如果OutTime没有值,则在bus.OutTime=Convert.ToDateTime(dr["outTime"])时报错,“对象不能从 DBNull 转换为其他类型”

C# code
 public List<BusResordModel> GetAll()        {            try            {                List<BusResordModel> list = new List<BusResordModel>();                using (SqlDataReader dr = sqlH.ExecuteReader("GetAllBusRecord", CommandType.StoredProcedure, null))                {                    while (dr.Read())                    {                        BusResordModel busM = new BusResordModel();                        busM.CardNo = dr["cardNo"].ToString();                        busM.UserName = dr["userName"].ToString();                        busM.BusNo = dr["busNo"].ToString();                        busM.BusType = dr["busType"].ToString();                        try                        {                            busM.InTime = Convert.ToDateTime(dr["inTime"]);                            if (busM.InTime==null)                            {                                busM.InTime = Convert.ToDateTime("");                            }                        }                        catch (Exception)                        {                        }                        busM.InAddr = dr["inAddr"].ToString();                        try                        {                            [color=#0000FF]busM.OutTime = Convert.ToDateTime(dr["outTime"]);[/color]                            if (busM.OutTime ==Convert.ToDateTime("0001-1-1 0:00:00"))                            {                                busM.OutTime = Convert.ToDateTime("");                            }                        }                        catch (Exception)                        {                        }                        busM.OutAddr = dr["outAddr"].ToString();                        busM.TotalTime = Convert.ToInt32(dr["totalTime"]);                        busM.Price = dr["price"].ToString();                        busM.Operater = dr["operater"].ToString();                        busM.Picture = dr["picture"].ToString();                        busM.Photo = dr["photo"].ToString();                        busM.Guid = dr["guid"].ToString();                        list.Add(busM);                    }                    return list;                }            }            catch            {                return null;            }        }


[解决办法]
C# code
if(dr["outTime"]!=null){  busM.OutTime=Convert.ToDateTime(dr["outTime"]);}else{    busM.OutTime=Convert.ToDateTime("2010-01-01");//设置个默认值啊}
[解决办法]
//有些数据库字段取出来,只判断是不是null是没用的,有可能是DBNull类型
if(dr["inTime"]==null || dr["inTime"]!==DBNull.Value)
{
//如果空就赋默认值
busM.InTime =DateTime.Now;
}
else
{
try
{
busM.InTime =Convert.ToDateTime(dr["inTime"]);
}
catch (Exception)
{
//如果错误就赋默认值
busM.InTime =DateTime.Now;
}

}
[解决办法]
C# code
class BusResordModel{    privaite DateTime? _outTime = null;    public DateTime? outTime { get{....} set{....} }  //使用? 表示此属性允许null值。在程序中可判断: if(outTime.HasValue) outTime.Value.....    .....}.......object obj = dr["outTime"];if(obj != null && obj != DBNull.Value) ....outTime = Convert.ToDateTime(obj); 

热点排行