网站运行一段时间后就报错,关于Eval()报错

时间:2021-06-24 17:04:15
.net网站运行一段时间就报错,不是某一个页面,而是涉及到Eval("aaa")绑定数据库字段的页面都会报错,错误提示DataBinding:“System.Data.DataRowView”不包含名为“HouseID”的属性。 但是数据库中表中有这个字段,sql查询也查了这个字段,数据库也能打开,但就是报错,而且是所有用这个方法的页面都报错,重启站点后错误就消失了,但隔一段时间又会出现。我一开始以为数据库连接有问题,但我试了一下登录能够正常登录,说明能连接上数据库,但这个写法也没问题啊,有问题为什么重启站点后就好用了 网站运行一段时间后就报错,关于Eval()报错网站运行一段时间后就报错,关于Eval()报错网站运行一段时间后就报错,关于Eval()报错

17 个解决方案

#1


看你后台代码,

#2


看你后台代码

#3


引用 2 楼 hanjun0612 的回复:
看你后台代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class index : System.Web.UI.Page
{
    public string UserName;
    public string Title, Keywords, Description, ShouQianQQ, ShouHouQQ, CaiWuQQ, TouSuQQ;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Users"] != null)
        {
            UserName = DBHelper.ExecuteScalar("select UserName from Users where ID='" + Session["Users"] + "'").ToString();
            Panel1.Visible = false;
            Panel2.Visible = true;
        }
        else   if (Session["SHUsers"] != null)
        {
            UserName = DBHelper.ExecuteScalar("select UserName from Users where ID='" + Session["SHUsers"] + "'").ToString();
            Panel1.Visible = false;
            Panel2.Visible = true;
        }
        else
        {
            Panel1.Visible = true;
            Panel2.Visible = false;
        }
        if (!IsPostBack)
        {
            lblcopyright.Text =System.Web.HttpUtility.HtmlDecode(DBHelper.ExecuteScalar("select Copyright from wj_Copyright ").ToString());
            WebSiteInfo();
            bindType();
            bindTop5Type();
            bindbanner();
            bindNewTuiJian();
            bindGongGao();
            bindKuaiXun();
            BindType();
        }
        var dt = DBHelper.GetDataTable("select * from KeFuQQ");
        ShouQianQQ = dt.Rows[0]["QQNum"].ToString();
        ShouHouQQ = dt.Rows[1]["QQNum"].ToString();
        CaiWuQQ = dt.Rows[2]["QQNum"].ToString();
        TouSuQQ = dt.Rows[3]["QQNum"].ToString();

    }
    private void BindType()
    {
        var dt = DBHelper.GetDataTable("select * from NewsType order by ID asc");
        rptType.DataSource = dt;
        rptType.DataBind();
    }
    protected void rptType_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string preid = ((DataRowView)e.Item.DataItem).Row["ID"].ToString();     //获得对应ID  
            Repeater rptNews = (Repeater)e.Item.FindControl("rptNews");              //找到要绑定数据的Repeater  
            if (rptNews != null)
            {
                string sqlstr = "select top 5 * from News where NID='" + preid + "' order by ID asc";
                rptNews.DataSource = DBHelper.GetDataTable(sqlstr);
                rptNews.DataBind();
            }
        }
    }
    private void bindGongGao()
    {
        var dt = DBHelper.GetDataTable("select top 5 *  from News where NID=5");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.rptGongGao.DataSource = pds;
            this.rptGongGao.DataBind();
        }
    }
    private void bindKuaiXun()
    {
        var dt = DBHelper.GetDataTable("select top 5 *  from News where NID=6");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.rptKuaiXun.DataSource = pds;
            this.rptKuaiXun.DataBind();
        }
    }
    public void WebSiteInfo()
    {
        var dt = Class1.ExecSel("select WS_Title,WS_keywords,WS_description from Site_Config");
        this.Title = Convert.ToString(dt.Rows[0]["WS_Title"]);
        this.Keywords = Convert.ToString(dt.Rows[0]["WS_keywords"]);
        this.Description = Convert.ToString(dt.Rows[0]["WS_description"]);
    }
    /// <summary>
    /// 绑定新品推荐
    /// </summary>
    private void bindNewTuiJian()
    {
        var dt = DBHelper.GetDataTable("select top 9 *  from SHAd where ShowAd=1 order by id desc");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.rptNewTuiJian.DataSource = pds;
            this.rptNewTuiJian.DataBind();
        }
    }
    /// <summary>
    /// 绑定banner图
    /// </summary>
    private void bindbanner()
    {
        var dt = DBHelper.GetDataTable("select * from banner order by sort asc");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.Repeater8.DataSource = pds;
            this.Repeater8.DataBind();
        }
    }
    private void bindType()
    {
        string sql = "select * from ShangPinType where twoid=0 and threeid=0 order by sort asc";
        var dt = DBHelper.GetDataTable(sql);
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.Repeater1.DataSource = pds;
            this.Repeater1.DataBind();
        }
    }
    private void bindTop5Type()
    {
        string sql = "select top 5 * from ShangPinType where twoid=0 and threeid=0 order by sort asc";
        var dt = DBHelper.GetDataTable(sql);
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.Repeater4.DataSource = pds;
            this.Repeater4.DataBind();
        }
    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string preid = ((DataRowView)e.Item.DataItem).Row["oneid"].ToString();     //获得对应ID  
            Repeater Repeater2 = (Repeater)e.Item.FindControl("Repeater2");              //找到要绑定数据的Repeater  
            if (Repeater2 != null)
            {
                Session["repeater1ID"] = preid;
                string sqlstr = "select * from ShangPinType where oneid='" + preid + "' and twoid<>0 and  threeid=0  order by sort asc";
                Repeater2.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater2.DataBind();
            }
        }
    }
    protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string preid = ((DataRowView)e.Item.DataItem).Row["twoid"].ToString();     //获得对应ID  
            Repeater Repeater3 = (Repeater)e.Item.FindControl("Repeater3");              //找到要绑定数据的Repeater  
            if (Repeater3 != null)
            {
                string sqlstr = "select * from ShangPinType where oneid='" + Session["repeater1ID"] + "' and twoid='" + preid + "' and  threeid<>0  order by sort asc";
                Repeater3.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater3.DataBind();
            }
        }
    }

    protected void Repeater4_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string preid = ((DataRowView)e.Item.DataItem).Row["oneid"].ToString();     //获得对应ID  
            Repeater Repeater5 = (Repeater)e.Item.FindControl("Repeater5");
            Repeater Repeater6 = (Repeater)e.Item.FindControl("Repeater6");    //找到要绑定数据的Repeater  
            string sqlstr = "select * from ShangPinType where oneid='" + preid + "' and  twoid<>0 and threeid=0  order by sort asc";         
            if (Repeater5 != null)
            {
                Repeater5.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater5.DataBind();
            }
            if (Repeater6 != null)
            {
                Repeater6.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater6.DataBind();
            }
            //sqlstr = "select top 8 ID,ImgUrl,SHName,SellPrice,RenQiNum from SHAd   where Type1='" + preid + "' and ShowAd=1  order by ID desc";
            sqlstr = "select top 8 S.ID,S.ImgUrl,S.Adtitle,S.SellPrice,S.RenQiNum from SHAd  S left join Collections C on S.ID=C.SHAdID  left join SHinfo SH on SH.SHUserID=S.SHUserID where S.Type1='" + preid + "' and S.ShowAd=1  group by S.ID,S.ImgUrl,S.Adtitle,S.SellPrice,S.RenQiNum  order by S.ID desc";
            Repeater Repeater7 = (Repeater)e.Item.FindControl("Repeater7");
            if (Repeater7!=null)
            {
                 Repeater7.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater7.DataBind();
            }
        }
    }
    protected void lbtnExit_Click(object sender, EventArgs e)
    {
        if (Session["Users"] != null)
        {
            Session.Remove("Users");
            Response.Redirect("/index.aspx");
        }
        if (Session["SHUsers"] != null)
        {
            Session.Remove("SHUsers");
            Response.Redirect("/index.aspx");
        }
    }
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        Response.Redirect("Serch_Result.aspx?KeyWord=" + txtKeyWord.Text);
    }  
}

#4


这是后台DataTable无此列

#5


引用 4 楼 liuleiyu121520 的回复:
这是后台DataTable无此列
网站运行一段时间后就报错,关于Eval()报错
报错的是repeater1,后台repeater1绑定数据你看看 网站运行一段时间后就报错,关于Eval()报错我用的是select * 怎么可能没有此列,而且不是一个页面出错,而是所有涉及到此问题的都出错,难道我所有页面都无此列?假如这样,那重启站点后为什么不报错了?

#6


后台代码select * 换成 select HouseID,*, 看这个语句执行的时候会不会报错。如果报错就是没有这个字段,如没有报错那就得别的原因了

#7


我也有类似的问题Repeater按条件查询查询不出来

#8


引用 6 楼 u012202391 的回复:
后台代码select * 换成 select HouseID,*, 看这个语句执行的时候会不会报错。如果报错就是没有这个字段,如没有报错那就得别的原因了
关键他不是一直报错,而是运行一段时间后就报错了,我真无语了

#9


数据库中数据有一行数据字段是NULL,然后你属性为NULL,处理不了就这样了。

#10


引用 9 楼 bidisty 的回复:
数据库中数据有一行数据字段是NULL,然后你属性为NULL,处理不了就这样了。

我看了一下报错的这些页面,其中一个页面有一列是null,有一个页面查询的所有列都不为null,而且报错的那个列反而不为空。假如是因为null的缘故,那在数据库数据相同的情况下为什么重启站点后问题就消失了,运行几天后才报错

#11


没有人帮忙了吗?求大神帮忙解决啊,不要沉了

#12




最好不要使用select * from 。。。。这样列明已有变动你就完了

#13




select     isnull(HouseID,"0")。。。。from 。。。。

#14


select     isnull(HouseID,"0")。。。。from 。。。。楼上美女正解

#15


引用 10 楼 baidu_35596909 的回复:
Quote: 引用 9 楼 bidisty 的回复:

数据库中数据有一行数据字段是NULL,然后你属性为NULL,处理不了就这样了。

我看了一下报错的这些页面,其中一个页面有一列是null,有一个页面查询的所有列都不为null,而且报错的那个列反而不为空。假如是因为null的缘故,那在数据库数据相同的情况下为什么重启站点后问题就消失了,运行几天后才报错


把出错时的数据记录下来,专门在自己的开发环境来“重现”问题。

当你能 100% 重现问题时,你自然就会调试了。如果净说”运行几天后才报错“,这样找理由就无法很好地改进程序质量。

先学如何重现问题,然后再程序。

#16


先学如何重现问题,然后再写程序。

不要一遇到 bug 就拿起“编程”武器来改程序。你如果尚不会重现问题,那么你学的编程还是小伎俩,只会正向地照抄别人的东西,还不会反过来用自己的头脑找问题。你能 100% 重现问题,至少 70% 以上的概率重现问题,这时候才应该动手研究程序代码。

#17


重现慢慢调试吧 .... 

#1


看你后台代码,

#2


看你后台代码

#3


引用 2 楼 hanjun0612 的回复:
看你后台代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class index : System.Web.UI.Page
{
    public string UserName;
    public string Title, Keywords, Description, ShouQianQQ, ShouHouQQ, CaiWuQQ, TouSuQQ;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Users"] != null)
        {
            UserName = DBHelper.ExecuteScalar("select UserName from Users where ID='" + Session["Users"] + "'").ToString();
            Panel1.Visible = false;
            Panel2.Visible = true;
        }
        else   if (Session["SHUsers"] != null)
        {
            UserName = DBHelper.ExecuteScalar("select UserName from Users where ID='" + Session["SHUsers"] + "'").ToString();
            Panel1.Visible = false;
            Panel2.Visible = true;
        }
        else
        {
            Panel1.Visible = true;
            Panel2.Visible = false;
        }
        if (!IsPostBack)
        {
            lblcopyright.Text =System.Web.HttpUtility.HtmlDecode(DBHelper.ExecuteScalar("select Copyright from wj_Copyright ").ToString());
            WebSiteInfo();
            bindType();
            bindTop5Type();
            bindbanner();
            bindNewTuiJian();
            bindGongGao();
            bindKuaiXun();
            BindType();
        }
        var dt = DBHelper.GetDataTable("select * from KeFuQQ");
        ShouQianQQ = dt.Rows[0]["QQNum"].ToString();
        ShouHouQQ = dt.Rows[1]["QQNum"].ToString();
        CaiWuQQ = dt.Rows[2]["QQNum"].ToString();
        TouSuQQ = dt.Rows[3]["QQNum"].ToString();

    }
    private void BindType()
    {
        var dt = DBHelper.GetDataTable("select * from NewsType order by ID asc");
        rptType.DataSource = dt;
        rptType.DataBind();
    }
    protected void rptType_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string preid = ((DataRowView)e.Item.DataItem).Row["ID"].ToString();     //获得对应ID  
            Repeater rptNews = (Repeater)e.Item.FindControl("rptNews");              //找到要绑定数据的Repeater  
            if (rptNews != null)
            {
                string sqlstr = "select top 5 * from News where NID='" + preid + "' order by ID asc";
                rptNews.DataSource = DBHelper.GetDataTable(sqlstr);
                rptNews.DataBind();
            }
        }
    }
    private void bindGongGao()
    {
        var dt = DBHelper.GetDataTable("select top 5 *  from News where NID=5");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.rptGongGao.DataSource = pds;
            this.rptGongGao.DataBind();
        }
    }
    private void bindKuaiXun()
    {
        var dt = DBHelper.GetDataTable("select top 5 *  from News where NID=6");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.rptKuaiXun.DataSource = pds;
            this.rptKuaiXun.DataBind();
        }
    }
    public void WebSiteInfo()
    {
        var dt = Class1.ExecSel("select WS_Title,WS_keywords,WS_description from Site_Config");
        this.Title = Convert.ToString(dt.Rows[0]["WS_Title"]);
        this.Keywords = Convert.ToString(dt.Rows[0]["WS_keywords"]);
        this.Description = Convert.ToString(dt.Rows[0]["WS_description"]);
    }
    /// <summary>
    /// 绑定新品推荐
    /// </summary>
    private void bindNewTuiJian()
    {
        var dt = DBHelper.GetDataTable("select top 9 *  from SHAd where ShowAd=1 order by id desc");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.rptNewTuiJian.DataSource = pds;
            this.rptNewTuiJian.DataBind();
        }
    }
    /// <summary>
    /// 绑定banner图
    /// </summary>
    private void bindbanner()
    {
        var dt = DBHelper.GetDataTable("select * from banner order by sort asc");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.Repeater8.DataSource = pds;
            this.Repeater8.DataBind();
        }
    }
    private void bindType()
    {
        string sql = "select * from ShangPinType where twoid=0 and threeid=0 order by sort asc";
        var dt = DBHelper.GetDataTable(sql);
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.Repeater1.DataSource = pds;
            this.Repeater1.DataBind();
        }
    }
    private void bindTop5Type()
    {
        string sql = "select top 5 * from ShangPinType where twoid=0 and threeid=0 order by sort asc";
        var dt = DBHelper.GetDataTable(sql);
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        if (dt.Rows.Count > 0)
        {
            this.Repeater4.DataSource = pds;
            this.Repeater4.DataBind();
        }
    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string preid = ((DataRowView)e.Item.DataItem).Row["oneid"].ToString();     //获得对应ID  
            Repeater Repeater2 = (Repeater)e.Item.FindControl("Repeater2");              //找到要绑定数据的Repeater  
            if (Repeater2 != null)
            {
                Session["repeater1ID"] = preid;
                string sqlstr = "select * from ShangPinType where oneid='" + preid + "' and twoid<>0 and  threeid=0  order by sort asc";
                Repeater2.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater2.DataBind();
            }
        }
    }
    protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string preid = ((DataRowView)e.Item.DataItem).Row["twoid"].ToString();     //获得对应ID  
            Repeater Repeater3 = (Repeater)e.Item.FindControl("Repeater3");              //找到要绑定数据的Repeater  
            if (Repeater3 != null)
            {
                string sqlstr = "select * from ShangPinType where oneid='" + Session["repeater1ID"] + "' and twoid='" + preid + "' and  threeid<>0  order by sort asc";
                Repeater3.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater3.DataBind();
            }
        }
    }

    protected void Repeater4_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string preid = ((DataRowView)e.Item.DataItem).Row["oneid"].ToString();     //获得对应ID  
            Repeater Repeater5 = (Repeater)e.Item.FindControl("Repeater5");
            Repeater Repeater6 = (Repeater)e.Item.FindControl("Repeater6");    //找到要绑定数据的Repeater  
            string sqlstr = "select * from ShangPinType where oneid='" + preid + "' and  twoid<>0 and threeid=0  order by sort asc";         
            if (Repeater5 != null)
            {
                Repeater5.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater5.DataBind();
            }
            if (Repeater6 != null)
            {
                Repeater6.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater6.DataBind();
            }
            //sqlstr = "select top 8 ID,ImgUrl,SHName,SellPrice,RenQiNum from SHAd   where Type1='" + preid + "' and ShowAd=1  order by ID desc";
            sqlstr = "select top 8 S.ID,S.ImgUrl,S.Adtitle,S.SellPrice,S.RenQiNum from SHAd  S left join Collections C on S.ID=C.SHAdID  left join SHinfo SH on SH.SHUserID=S.SHUserID where S.Type1='" + preid + "' and S.ShowAd=1  group by S.ID,S.ImgUrl,S.Adtitle,S.SellPrice,S.RenQiNum  order by S.ID desc";
            Repeater Repeater7 = (Repeater)e.Item.FindControl("Repeater7");
            if (Repeater7!=null)
            {
                 Repeater7.DataSource = DBHelper.GetDataTable(sqlstr);
                Repeater7.DataBind();
            }
        }
    }
    protected void lbtnExit_Click(object sender, EventArgs e)
    {
        if (Session["Users"] != null)
        {
            Session.Remove("Users");
            Response.Redirect("/index.aspx");
        }
        if (Session["SHUsers"] != null)
        {
            Session.Remove("SHUsers");
            Response.Redirect("/index.aspx");
        }
    }
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        Response.Redirect("Serch_Result.aspx?KeyWord=" + txtKeyWord.Text);
    }  
}

#4


这是后台DataTable无此列

#5


引用 4 楼 liuleiyu121520 的回复:
这是后台DataTable无此列
网站运行一段时间后就报错,关于Eval()报错
报错的是repeater1,后台repeater1绑定数据你看看 网站运行一段时间后就报错,关于Eval()报错我用的是select * 怎么可能没有此列,而且不是一个页面出错,而是所有涉及到此问题的都出错,难道我所有页面都无此列?假如这样,那重启站点后为什么不报错了?

#6


后台代码select * 换成 select HouseID,*, 看这个语句执行的时候会不会报错。如果报错就是没有这个字段,如没有报错那就得别的原因了

#7


我也有类似的问题Repeater按条件查询查询不出来

#8


引用 6 楼 u012202391 的回复:
后台代码select * 换成 select HouseID,*, 看这个语句执行的时候会不会报错。如果报错就是没有这个字段,如没有报错那就得别的原因了
关键他不是一直报错,而是运行一段时间后就报错了,我真无语了

#9


数据库中数据有一行数据字段是NULL,然后你属性为NULL,处理不了就这样了。

#10


引用 9 楼 bidisty 的回复:
数据库中数据有一行数据字段是NULL,然后你属性为NULL,处理不了就这样了。

我看了一下报错的这些页面,其中一个页面有一列是null,有一个页面查询的所有列都不为null,而且报错的那个列反而不为空。假如是因为null的缘故,那在数据库数据相同的情况下为什么重启站点后问题就消失了,运行几天后才报错

#11


没有人帮忙了吗?求大神帮忙解决啊,不要沉了

#12




最好不要使用select * from 。。。。这样列明已有变动你就完了

#13




select     isnull(HouseID,"0")。。。。from 。。。。

#14


select     isnull(HouseID,"0")。。。。from 。。。。楼上美女正解

#15


引用 10 楼 baidu_35596909 的回复:
Quote: 引用 9 楼 bidisty 的回复:

数据库中数据有一行数据字段是NULL,然后你属性为NULL,处理不了就这样了。

我看了一下报错的这些页面,其中一个页面有一列是null,有一个页面查询的所有列都不为null,而且报错的那个列反而不为空。假如是因为null的缘故,那在数据库数据相同的情况下为什么重启站点后问题就消失了,运行几天后才报错


把出错时的数据记录下来,专门在自己的开发环境来“重现”问题。

当你能 100% 重现问题时,你自然就会调试了。如果净说”运行几天后才报错“,这样找理由就无法很好地改进程序质量。

先学如何重现问题,然后再程序。

#16


先学如何重现问题,然后再写程序。

不要一遇到 bug 就拿起“编程”武器来改程序。你如果尚不会重现问题,那么你学的编程还是小伎俩,只会正向地照抄别人的东西,还不会反过来用自己的头脑找问题。你能 100% 重现问题,至少 70% 以上的概率重现问题,这时候才应该动手研究程序代码。

#17


重现慢慢调试吧 ....