炫客软件工作室
首页 公司 资讯 产品 支持 网站建设 案例 代理 SEO优化

热线:13628442993 | 联系方式

  当前位置: >> 首页 >> 支持

超博CMS,后台修改新闻,出现"无法保存,被其他用户锁定"的解决方案

作者:spkl 发表时间:2010-5-30 9:46:54 阅读:

出现上述错误
问题出自超博cms中的DAL.dbhelper类
原因是DAL.dbhelper类中的ExecQuery方法,没有及时关闭Con
包括其中的ExecReader方法,也是如此,所以在前台如果使用getreader方法一定会暴服务器错误

解决办法:
设置CON为静态static,修改DAL中的this.con为全路径:DAL.DBHelper.con

只后台或前台出错的地方,加入 
     try
        {
            DAL.DBHelper.con.Close();
        }
        catch { }

如:在后台的admins/Articles/Edit.aspx.cs 中修改如下:

在Page_Load方法最后,加入
     try
        {
            DAL.DBHelper.con.Close();
        }
        catch { }
形如:
protected void Page_Load(object sender, EventArgs e)
{
其他代码.....

     try
        {
            DAL.DBHelper.con.Close();
        }
        catch { }

}

另外将
General.MessageTips mestip = new General.MessageTips();
    BLL.Articles bll = new BLL.Articles();
    Model.Articles model = new Model.Articles();
设置为公用变量,防止每次都初始化,容易报错,这样可以在页面加载完毕后确保一次性关闭连接


修改事件中 加入try
                {
                    DAL.DBHelper.con.Open();
                }
                catch { }
打开连接即可


完整代码如下:

[code]using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using System.Drawing;

public partial class Admins_Articles_Edit : System.Web.UI.Page
{
    public string strImgDirName;
    General.MessageTips mestip = new General.MessageTips();
    BLL.Articles bll = new BLL.Articles();
    Model.Articles model = new Model.Articles();
    protected void Page_Load(object sender, EventArgs e)
    {
        int intChannelID = 0;
        int.TryParse(Request.QueryString["ChannelID"], out intChannelID);
        if (!IsPostBack)
        {
            Model.Channels modelChannel = new BLL.Channels().GetModel(intChannelID);
            ltlChannelName.Text = ltlChannelName2.Text = modelChannel.ChannelName;
            new General.Trees().dropTypesBind(dropTypes, modelChannel.ChannelID, modelChannel.Depth);
          

            int intArticleID = 0;
            int.TryParse(Request.QueryString["ArticleID"], out intArticleID);
            txtPublished.Text = DateTime.Now.ToString();
            ltlEditType.Text = "添加文章";
            //如果是编辑状态,则填充原文内容
            if (intArticleID > 0)
            {
                model = bll.GetModel(intArticleID);
                if (!FillText(intChannelID, intArticleID))
                    return;
                ltlEditType.Text = "编辑文章";
            }
            else if (!new General.Rights().InsertRights(Request.ServerVariables["PATH_INFO"], intChannelID))
                return;
        }
        txtContent.UploadFolder = "upload/" + strImgDirName + "/";
        strImgDirName = intChannelID.ToString();
        try
        {
            DAL.DBHelper.con.Close();
        }
        catch { }
    }

    /// <summary>
    /// 填充文章内容
    /// </summary>
    private bool FillText(int intChannelID,int intArticleID)
    {
       

        if (model.ChannelID != intChannelID)
        {
            mestip.AlertAndRedirect("该记录不属于该频道!", "/admins/default.aspx");
            return false;
        }
        txtTitle.Text = model.Title;
        txtTitle.ForeColor = Color.FromName(model.TitleColor);
        hidTitleColor.Value = model.TitleColor;
        dropTypes.SelectedValue = model.TypeID.ToString();
        txtEditor.Text = model.Editor;
        txtSource.Text = model.Source;
        txtBrief.Text = model.Brief;
        txtContent.Text = model.Content;
        txtImg.Value = model.Pic;
        img1.Src=File.Exists(Server.MapPath("~" + model.Pic)) ? model.Pic : "/UpLoadFiles/noPic.gif";
        RadioButtonList1.SelectedValue = model.Commend.ToString();
        RadioButtonList2.SelectedValue = model.NewsType.ToString();

        BookName.Text = model.BookName.ToString();
        BookEditor.Text = model.BookEditor;
        BookPress.Text = model.BookPress;
        BookTime.Text = model.BookTime;
        BookNotes.Text = model.BookNotes;
        PaperName.Text = model.PaperName;
        PaperEditor.Text = model.PaperEditor;
        PaperBook.Text = model.PaperBook;
        PaperBookNumber.Text = model.PaperBookNumber;
        PaperBookClass.Text = model.PaperBookClass;
        PaperBrief.Text = model.PaperBrief;
        PaperNotes.Text = model.PaperNotes;
        AwardsPmName.Text = model.AwardsPmName;
        AwardsClass.Text = model.AwardsClass;
        AwardsPerson.Text = model.AwardsPerson;
        AwardsTime.Text = model.AwardsTime;
        AwardsNotes.Text = model.AwardsNotes;
        PmName.Text = model.PmName;
        PmSource.Text = model.PmSource;
        PmNumber.Text = model.PmNumber;
        PmPerson.Text = model.PmPerson;
        PmUseTime.Text = model.PmUseTime;
        PmNote.Text = model.PmNote;
        sx.Text = model.Sort.ToString();

        ht();

        txtPublished.Text = model.Published.ToString();
        btnPost.Text = "修 改";
      
        return true;
    }

    /// <summary>
    /// 发表文章
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnPost_Click(object sender, EventArgs e)
    {
       

        int intArticleID = 0;
        int.TryParse(Request.QueryString["ArticleID"],out intArticleID);
        if (intArticleID > 0)
            model = bll.GetModel(intArticleID);

        model.Title = txtTitle.Text;
        model.TitleColor = hidTitleColor.Value;
        model.TypeID = int.Parse(dropTypes.SelectedValue);
        model.Pic = txtImg.Value;
        model.Brief = txtBrief.Text.Trim();
        model.Content = txtContent.Text.Trim();
        model.Editor = txtEditor.Text.Trim();
        model.Source = txtSource.Text.Trim();
        model.Commend = (byte)RadioButtonList1.SelectedIndex;
        model.Published = DateTime.Parse(txtPublished.Text);

        model.NewsType = RadioButtonList2.SelectedValue.ToString();
        model.BookName = BookName.Text.Trim();
        model.BookEditor = BookEditor.Text.Trim();
        model.BookPress = BookPress.Text.Trim();
        model.BookTime = BookTime.Text.Trim();
        model.BookNotes = BookNotes.Text.Trim();
        model.PaperName = PaperName.Text.Trim();
        model.PaperEditor = PaperEditor.Text.Trim();
        model.PaperBook = PaperBook.Text.Trim();
        model.PaperBookNumber = PaperBookNumber.Text.Trim();
        model.PaperBookClass = PaperBookClass.Text.Trim();
        model.PaperBrief = PaperBrief.Text.Trim();
        model.PaperNotes = PaperNotes.Text.Trim();
        model.AwardsPmName = AwardsPmName.Text.Trim();
        model.AwardsClass = AwardsClass.Text.Trim();
        model.AwardsPerson = AwardsPerson.Text.Trim();
        model.AwardsTime = AwardsTime.Text.Trim();
        model.AwardsNotes = AwardsNotes.Text.Trim();
        model.PmName = PmName.Text.Trim();
        model.PmSource = PmSource.Text.Trim();
        model.PmNumber = PmNumber.Text.Trim();
        model.PmPerson = PmPerson.Text.Trim();
        model.PmUseTime = PmUseTime.Text.Trim();
        model.PmNote = PmNote.Text.Trim();
        model.Sort = int.Parse(sx.Text);


        string strTuUrl="List.aspx?ChannelID=" + Request.QueryString["ChannelID"];
        if (model.ArticleID > 0) //修改文章
        {
            try
            {
                DAL.DBHelper.con.Close();
            }
            catch { }
            try
            {
                try
                {
                    DAL.DBHelper.con.Open();
                }
                catch { }
                int rr = bll.Update(model);
                if (rr > 0)
                {
                    mestip.AlertAndRedirect("修改成功!", strTuUrl);
                }
            }
            catch
            {
                 mestip.AlertAndRedirect("记录不存在或传参错误!", strTuUrl);

            }
           
        }
        else //发表新文章
        {
            model.ChannelID = int.Parse(Request.QueryString["ChannelID"]);
           
            if(bll.Insert(model)>0)
                mestip.AlertAndRedirect("添加成功!", strTuUrl);
        }
    }
    protected void RadioButtonList2_SelectedIndexChanged(object sender, EventArgs e)
    {
        ht();
    }

    public void ht()
    {
        string t = RadioButtonList2.SelectedValue;
        t1.Visible = false;
        t2.Visible = false;
        t3.Visible = false;
        t4.Visible = false;
        switch (t)
        {
            case "1":
                t1.Visible = true;
                break;
            case "2":
                t2.Visible = true;
                break;
            case "3":
                t3.Visible = true;
                break;
            case "4":
                t4.Visible = true;
                break;
            default:
                break;
        }
    }
}
[/code]

相关网页
炫客资源采集
即日起,建站客户,建站可享受 赠送500M三线高速空间,COM域名,企业OA,更有众多好礼相送!
分销商高级应用专区 安装、服务器设置、网站主题安装、内容添加的整体流程演示与学习
用户管理应用专区 网站的内容添加、设置等初级用户操作流程的演示与学习
主题设计师专区 主题模板设计、变量块应用、主题调试发布及销售管理流程的演示与学习
炫客软件
服务热线:13628442993    QQ:61677931
重庆炫客软件工作室 2009(C) 版权所有 鲁ICP备09058210号 重庆做网站,重庆企业建站,重庆网站建设,重庆建站
在线客服
网站新闻地图