标题:在ASP.NET中如何将事务放在两个方法中处理?
只看楼主
zhsht2663
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-10-27
 问题点数:0 回复次数:3 
在ASP.NET中如何将事务放在两个方法中处理?
请教高手:一个页面中有两个按钮,一个按钮用来读取数据并绑定到控件,开始事务,数据修改后,点击第二按钮后提交事务,保存修改。这两个按钮事件如何写?
以下是我写的方法,但不能实现,该如何修改?
    SqlConnection con = DB.dbcon();
    SqlTransaction tran=null;
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            yuejuantimu();
        }
    }
    public void yuejuantimu()
    {  
        string cmdsql = "select top 5 答案ID,t.科目,内容,考生答案,空后内容,参考答案,分值 from 答案评卷 d ";
        cmdsql += " WITH (updlock,readpast) inner join 试题库 t on t.试题ID=d.试题ID where t.科目= '";
        cmdsql += Request.QueryString["rjxk"].ToString()+ "' and t.题型='";
        cmdsql += DropDownList1.SelectedValue +"' and 小题得分 is null ORDER BY 答案ID ";
        SqlCommand cmd = new SqlCommand(cmdsql, con);
        SqlDataAdapter dpt = new SqlDataAdapter(cmd);
        try
        {
            con.Open();
            tran = con.BeginTransaction(IsolationLevel.RepeatableRead);
            cmd.Transaction = tran;                                    
            DataTable dt = new DataTable();
            dpt.Fill(dt);
            DataList1.DataSource = dt;
            DataList1.DataBind();
            Button1.Enabled = false;
        }
        catch
        {
            tran.Rollback();
            con.Close();
        }
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        string upstr = "";
        foreach (DataListItem list in DataList1.Items)
        {
            Label lbl = (Label)list.FindControl("lblID");
            TextBox txtda = (TextBox)list.FindControl("txtDaan");
            upstr += " update 答案评卷 set 小题得分=" + txtda.Text + " where 答案ID=" + lbl.Text ;
        }
        con.Open();
        SqlCommand cmd = new SqlCommand(upstr, con);
        tran = con.BeginTransaction(IsolationLevel.RepeatableRead);
        cmd.Transaction = tran;
        cmd.ExecuteNonQuery();   //执行到这里出现 :超时时间已到。在操作完成之前超时时间已过或服务器未响应。
        ();
        con.Close();
    }
请不吝敕教!
搜索更多相关主题的帖子: void public null 如何 
2013-02-16 09:58
zhsht2663
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-10-27
得分:0 
大家都不愿回答这样的问题还是我的礼貌不周?
2013-02-17 17:08
冰蟾子
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:498
专家分:109
注 册:2006-4-14
得分:0 
不可以的..bs结构是无状态的

ps:不知道你这样做意义何在

欢迎到我的blog做客。。。。。。。。
2013-02-25 01:20
学荟宁静
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:10
专家分:37
注 册:2013-2-22
得分:0 
你的事务已经开启过了,为什么在按钮时间里还要BeginTransaction呢。直接把已经开启的事务对象传进去就好了。因为你的数据没有提交过,所以它依然是open的!你可以调试一下。理清楚思路,个人认为你这样写事务是很不科学的!

虚空虚空,一切皆是虚空
2013-02-25 10:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-398640-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.163173 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved