凌晨两点,新作了一个文章发布程序。。问题多多

 里面使用一个通用的数据库访问类UnDbAccess,主要实现了以下一些方法:

1.ExecuteNonQuery:执行INSERT、DELETE、UPDATE等SQL语句并返回受影响的行的数目。

2.ExecuteReader:执行SELECT操作并返回一个数据读取器对象。

3.ExecuteScalar:执行SQL操作并返回单值对象,即结果集中第一行的第一条数据。

4.PopulateDataSet:执行SQL操作,通过数据适配器对象将从数据源获取的数据填充到数据集对象中

并返回之。
------------------------------------------------
当然,别人写的

问题多多呀,我将常用的操作放在了一个newspublic类里面,例如访问常用的信息(站点名、地址、email)等:
public class NewsPublic
 {
  private string siteName,siteUrl,siteMail,siteLogo,siteAd,newsAd,affiche;
  
  
  public NewsPublic()
  {
   UnDbAccess uda=new UnDbAccess();
    OleDbDataReader dr=(OleDbDataReader)uda.ExecuteReader(SELECT * FROM SiteConfig WHERE id=1);
   if(dr.Read())
   {
    siteName=dr["db_SiteName"].ToString();
    siteUrl=dr["db_SiteUrl"].ToString();
    siteMail=dr["db_SiteMail"].ToString();
    siteLogo=dr["db_SiteLogo"].ToString();
    siteAd=dr["db_SiteAd"].ToString();
    newsAd=dr["db_NewsAd"].ToString();
    Affiche=dr["db_Affiche"].ToString();
   }
      
  }

---------------------------------
然后在首页default.aspx调用:

public class _default1 : System.Web.UI.Page
 {
  private NewsPublic np;
  protected System.Web.UI.HtmlControls.HtmlForm Form1;
  protected System.Web.UI.WebControls.DataGrid DataGrid_ShowAll;
  protected System.Web.UI.WebControls.Literal L_Affiche;
  protected System.Web.UI.WebControls.DataGrid DG_HotNews;
  protected System.Web.UI.WebControls.Literal SiteTitle;
  
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!Page.IsPostBack)
   {
    np=new NewsPublic();
    SiteTitle.Text=np.SiteName;
    L_Affiche.Text=np.Affiche;
    ShowNewsAll();
    ShowHotNews();
   }
  }



显示正常,可刷新几次后,问题就出来了:
System.NullReferenceException: 未将对象引用设置到对象的实例
说是newspublic类里面的
  OleDbDataReader dr=(OleDbDataReader)uda.ExecuteReader(SELECT * FROM SiteConfig WHERE id=1);
   if(dr.Read())
这个有问题,uda.ExecuteReader返回的是null
这是怎么回事呢,过一会在刷新又好用了,连着刷几次,又提示System.NullReferenceException
搞得我头痛死了。。。。。。。。。那个过来人指点一下
posted @ 2004-02-17 02:21 红尘中迷茫 阅读(462) 评论(4)  编辑 收藏

  回复  引用  查看    
#1楼 2004-02-17 08:58 | huobazi      
你的reader关闭了吗?
  回复  引用  查看    
#2楼 2004-02-17 12:18 | Meyer      
由你的函数 public NewsPublic()
可以看出你没有关闭你的datareader
虽然我不敢肯定这就是你出错的原因,但这肯定是个错误
建议写成
using(OleDbDataReader dr=(OleDbDataReader)uda.ExecuteReader(SELECT * FROM SiteConfig WHERE id=1))
{
if(dr.Read())
{

}
}


我也遇到你这个问题,我搜啊,搜啊,搜到你这篇文件,你的问题跟我类似,但我的是采用<<asp.net站点高级编程,提出问题--分析问题--解决问题>>一书的代码.我用一个dropdownlist显示数据,第一次的时候可以,刷新后跟你一样错,看到你的问题,我再仔细检查我的代码,没有问题啊.

最后,我找到我用的一个configuration类里读取xml里的连接字符串有误,原来是这里的错!最后按下载的源代码贴进去,重新编译,搞定!

希望能对你有用.
  回复  引用    
#4楼 2006-10-19 13:37 | YY[匿名] [未注册用户]
我是文盲,可以问一下,这用的是VB写的吗?
我看很象,也有点象用的JAVA,但没JAVA的申明项!

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: