我遇到的出现这种错误的原因一般是以下几种情况:
1.在绑定数据控件的时候,
//建立数据库连接
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath("news.mdb"));
//创建OleDbDataAdapter对象,按照指定的查询语句获取结果
OleDbDataAdapter mycom = new OleDbDataAdapter("select top 12 * from contents where typeid=1 order by shijian desc", conn);
OleDbDataAdapter mycom1 = new OleDbDataAdapter("select top 12 * from contents where typeid=2 order by shijian desc", conn);
//定义DataSet对象,将查询结果填充到这个对象上
DataSet ds = new DataSet();
mycom.Fill(ds, "contents");
mycom1.Fill(ds, "types");
这个时候,如果直接绑定:
mylist.DataSource = ds.Tables["contents"].DefaultView;
mylist1.DataSource = ds.Tables["types"].DefaultView;
mylist.DataBind();
mylist1.DataBind();
那么如果这两个表中没有记录,就有可能出现这个错误。
通过调试,查阅MSDN帮助就可以获得该问题的相关资料:
关于异常的疑难解答:System.NullReferenceException
试图在代码中引用不存在的对象时,会发生 NullReferenceException。例如,您可能试图在未先使用 New 关键字的情况下使用对象,或试图使用值设置为 null(在 Visual Basic 中为 Nothing)的对象。
-
使用关键词 New 创建实例。
-
您可能试图在未提供对象实例的情况下使用对象。例如, Dim CustomerTable As DataTable 应该重写为 Dim CustomerTable As New DataTable。
-
包含检查空引用的代码块。
以编程方式检查以确定函数是否已返回 null(在 Visual Basic 中为 Nothing ),而不是对象的实例。
-
有关更多信息,Visual Basic 的用户可以参见 Nothing (Visual Basic)。
-
有关更多信息,C# 的用户可以参见 null(C# 参考)。
-
在 Try…Catch…Finally 语句中显式地捕获 NullReferenceException。
-
Try…Catch…Finally 语句可以检查特定类型的异常,从最特殊的异常到最普通的异常。
-
有关更多信息,Visual Basic 的用户可以参见 Try...Catch...Finally 语句 (Visual Basic)。
-
有关更多信息,C# 的用户可以参见 try-catch-finally(C# 参考)。
-