系统很多地方在获取参数,返回对象等方式上没有判断对象为null的情况,这样造成外网一搞就出现黄页!(开发人员写程序不严谨造成)。
例如在写实体类的时候,我们要判断类型是否为空的情况,这里的判断顺序也不可颠倒。
public QsqAdminLog(IDataReader dr)
{
_id = Convert.ToInt32(dr["LogId"]);
UserId = Convert.ToInt32(dr["UserId"]);
if(dr["LoginTime"]!=null && dr["LoginTime"].ToString() != "")
{
LoginTime = Convert.ToDateTime(dr["LoginTime"]);
}
if(dr["LoginOutTime"]!=null && dr["LoginOutTime"].ToString() != "" )
{
LoginOutTime = Convert.ToDateTime(dr["LoginOutTime"]);
}
UserName = dr["UserName"]==null?"":dr["UserName"].ToString();
}
{
_id = Convert.ToInt32(dr["LogId"]);
UserId = Convert.ToInt32(dr["UserId"]);
if(dr["LoginTime"]!=null && dr["LoginTime"].ToString() != "")
{
LoginTime = Convert.ToDateTime(dr["LoginTime"]);
}
if(dr["LoginOutTime"]!=null && dr["LoginOutTime"].ToString() != "" )
{
LoginOutTime = Convert.ToDateTime(dr["LoginOutTime"]);
}
UserName = dr["UserName"]==null?"":dr["UserName"].ToString();
}
SqlDataProvider里如果有日期类型的话,也需要判断
cmd.Parameters.Add("@LoginTime",SqlDbType.DateTime).Value = lr.LoginTime.Tostring() ;//== "0001-1-1 0:00:00" ?DBNull.Value:lr.LoginTime;