打印本文 打印本文 关闭窗口 关闭窗口
出现SqlTransaction 已完成;它再也无法使用的错误提示之解决方案上簈
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1961  更新时间:2009/6/9 2:33:56  文章录入:mintao  责任编辑:mintao

当只是使用一次事务时,只用简单的事务就可以了

示例代码:

       SqlServerDataBase obj = new SqlServerDataBase();
        SqlConnection conn = obj.DBconn();
        conn.Open();
        SqlTransaction myTrans;
        myTrans = conn.BeginTransaction(IsolationLevel.ReadCommitted);

        try
        {
            obj.Insert("insert into StuInfo (StuNumber,Name,Sex,Specialty) values('" + stuNumber + "','" + name + "','" + sex + "','" + specialty + "')", null);
            obj.Insert("insert into StuSkill(StuNumber,Skill) values('" + stuNumber + "','" + skill + "')", null);
            myTrans.Commit();
            Response.Write("两条数据均插入到数据库中!");
        }
        catch (Exception ex)
        {
            try
            {
                myTrans.Rollback();
            }
            catch (SqlException sqlEx)
            {
                if (obj.DBconn() != null)
                {
                    Response.Write(sqlEx.GetType()+"数据库打开失败");
                    Response.Redirect("submit.htm");
                }
            }
        }
        finally
        {
            obj.DBconn().Close();
        }

  但是设计多个事务处理,比方使用for循环时,处理不当就会产生“SqlTransaction 已完成;它再也无法使用”的问题,主要就是因为SqlTransaction 使用了Commit()后就是不能在使用了,必须重新BeginTransaction()一个。

网络转载

打印本文 打印本文 关闭窗口 关闭窗口