凌晨两点,新作了一个文章发布程序。。问题多多
里面使用一个通用的数据库访问类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
搞得我头痛死了。。。。。。。。。那个过来人指点一下