未将对象引用设置到对象的实例问题
异常详细信息:
System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 100: }
行 101: List<EducationClass> List_EducationClass = new List<EducationClass>();
行 102: while (rec.Read())(这里出错了)
行 103: {
行 104: EducationClass EducationClass = new EducationClass();
运行时没有错误,但是只要点击菜单超过七次马上就出现这个问题了,不明白原因,是缓存的问题还是代码的问题?
代码:
/// <summary>
/// 查看全部分类
/// </summary>
/// <param name="nClassID"></param>
/// <returns></returns>
public List<EducationClass> Get_EducationClass(int nParentID)
{
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();
SqlParameter[] ParamList ={
sqlHelper.CreateInParam("@ParentID",SqlDbType.Int,4,nParentID)
};
SqlDataReader rec = null;
try
{
sqlHelper.RunProc("Get_EducationClass", ParamList, out rec);
}
catch (Exception ex)
{
SystemError.CreateErrorLog(ex.Message);
throw new Exception(ex.Message, ex);
}
List<EducationClass> List_EducationClass = new List<EducationClass>();
while (rec.Read())
{
EducationClass EducationClass = new EducationClass();
EducationClass.ClassID = Int32.Parse(rec["ClassID"].ToString());
EducationClass.ClassName = rec["ClassName"].ToString();
EducationClass.ParentID = Int32.Parse(rec["ParentID"].ToString());
EducationClass.ParentOrder = Int32.Parse(rec["ParentOrder"].ToString());
List_EducationClass.Add(EducationClass);
EducationClass = null;
}
return List_EducationClass;
}
------解决方案--------------------
你要按照流程来,
先打开连接,
再执行命令
再关闭连接
try
{
//打开连接
...
///读取数据
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch(Exception ex)
{
dataReader = null;
///记录错误日志
SystemError.CreateErrorLog(ex.Message);
}
finally
{
关闭连接
}
看你代码每次都没关闭连接