数据库中时间字段inTime和OutTime,允许为空,从数据库中获取数据时,如果OutTime没有值,则在bus.OutTime=Convert.ToDateTime(dr["outTime"])时报错,“对象不能从 DBNull 转换为其他类型” 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
{
busM.OutTime = Convert.ToDateTime(dr["outTime"]); 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;
} }
{
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
{
busM.OutTime = Convert.ToDateTime(dr["outTime"]); 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;
} }
if(dr["outTime"]!=null)
{
bus.OutTime=Convert.ToDateTime(dr["outTime"]);
}
if(dr["outTime"]!=null)
{
busM.OutTime=Convert.ToDateTime(dr["outTime"]);
}
else
{
busM.OutTime=Convert.ToDateTime("2010-01-01");//设置个默认值啊
}
打断点看,当outTime里没有值时,它会自己读取应该是最小的值 吧“0001-1-1 0:00:00”,然后再继续下去的话还是报那个错
那应该怎么办啊
{
busM.OutTime=Convert.ToDateTime(dr["outTime"]);
}
else
{
busM.OutTime=Convert.ToDateTime("2010-01-01");//设置个默认值啊
}
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;
}}
if(DateTime.Equals(Convert.ToDateTime(dr["outTime"].ToString()),Convert.ToDateTime("0001-1-1 0:00:00"))
{
busM.OutTime=Convert.ToDateTime(dr["outTime"]);
}
else
{
busM.OutTime=Convert.ToDateTime("2010-01-01");//设置个默认值啊
}
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);
对 变量类型加? 就可以为null 忘记了