问题描述
namespaceLSQLClass{省略部分代码。。。。publicclassSQLData{publicstaticSqlDataReaderdataReader(stringsqlstr){SqlDataReaderdr=null;try{openConnection();comm.CommandText=sqlstr;comm.CommandType=CommandType.Text;dr=comm.ExecuteReader(CommandBehavior.CloseConnection);}catch{try{dr.Close();closeConnection();}catch{}}returndr;}}然后进行调用省略部分代码usingSystem.Data.SqlClient;usingLSQLClass;省略部分代码this.DdlMenu.Items.Clear();this.DdlMenu.Items.Add(newListItem("所有产品类别","0"));SqlDataReaderdr=SQLData.dataReader("select*fromYT_FLwhereFL_DL=2");while(dr.Read()){this.DdlMenu.Items.Add(newListItem(dr["FL_Name"].ToString(),dr["FL_ID"].ToString()));}dr.Close();出错信息“/”应用程序中的服务器错误。--------------------------------------------------------------------------------未将对象引用设置到对象的实例。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.NullReferenceException:未将对象引用设置到对象的实例。源错误:行60:this.DdlMenu.Items.Add(newListItem("所有产品类别","0"));行61:SqlDataReaderdr=SQLData.dataReader("select*fromYT_FLwhereFL_DL=2");行62:while(dr.Read())行63:{行64:this.DdlMenu.Items.Add(newListItem(dr["FL_Name"].ToString(),dr["FL_ID"].ToString()));源文件:g:wwwrootyuntaimanageMProduce.aspx.cs行:62堆栈跟踪:[NullReferenceException:未将对象引用设置到对象的实例。]manage_MProduce.eProduceM()ing:wwwrootyuntaimanageMProduce.aspx.cs:62manage_MProduce.Page_Load(Objectsender,EventArgse)ing:wwwrootyuntaimanageMProduce.aspx.cs:27System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtrfp,Objecto,Objectt,EventArgse)+14System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Objectsender,EventArgse)+35System.Web.UI.Control.OnLoad(EventArgse)+99System.Web.UI.Control.LoadRecursive()+50System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+627不是经常出现,一直刷新页面就会出现这个错误,求救啊!!!什么原因,谢谢各位!
解决方案
解决方案二:
是不是dr的资源没释放?
解决方案三:
查询结果存在空值。
解决方案四:
dr["FL_Name"].ToString(),dr["FL_ID"].ToString()确定这两个都取到值了吗
解决方案五:
好象dr就已经没值了吧
解决方案六:
那请问我应该怎么做,怎么调用?使用的数据库类
解决方案七:
dr的值为空了跟踪调试看下把断点打在这:行61:SqlDataReaderdr=SQLData.dataReader("select*fromYT_FLwhereFL_DL=2");你把问题重现,看为什么值为空了
解决方案八:
你的看下openConnection();还有你的COMM设置SQL连接了吗?
解决方案九:
不是一直出现这个问题的,偶尔出现,刷新页面过多就会出现,共同调用的一个类,重启下IIS就会正常
解决方案十:
引用6楼weifei_tlp的回复:
dr的值为空了跟踪调试看下把断点打在这:行61:SqlDataReaderdr=SQLData.dataReader("select*fromYT_FLwhereFL_DL=2");你把问题重现,看为什么值为空了
空值了
解决方案十一:
调用的是静态类吧,哈哈,我以前也遇到这种莫名奇妙的问题。改成非静态类就不会出现这种情况了
解决方案十二:
对,静态类,不知为何,莫名其妙
解决方案十三:
改为单例模式,取代静态类
解决方案十四:
没法解决啊!