在数据操作时,发生数据类型转换错误,此时回滚事务,报“ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION”错误,不知道什么原因具体代码如下:
            SCommBB sCommBB = new SCommBB(this.connection);            SqlTransaction trans = null;
            try
            {
                trans = this.connection.BeginTransaction("TransModify");
                sCommBB.Transaction = trans;                sCommBB.UpdateRecord("insert into BSaleContract(handDt)  values ('34')");                trans.Commit();
            }
            catch (Exception ex)
            {
                trans.Rollback("TransModify");
                throw ex;
            }
在执行插入语句时,发生类型转换错误,此时跳到错误处理,进行事务回滚,此时报上面的错误
如果执行的语句不是类型转换的错误,而是数据表不存在等其他原因,事务回滚都能正常
第一次遇到这个问题,google了一下也没有找到解决办法,各位同仁是否明白个中道理,还请帮忙

解决方案 »

  1.   

    把下面这两句放到try{}之前:
                    trans = this.connection.BeginTransaction("TransModify"); 
                    sCommBB.Transaction = trans; 
    如下:
                SCommBB sCommBB = new SCommBB(this.connection);             SqlTransaction trans = this.connection.BeginTransaction("TransModify"); 
                sCommBB.Transaction = trans; 
                try 
                { 
                    sCommBB.UpdateRecord("insert into BSaleContract(handDt)  values ('34')");                 trans.Commit(); 
                } 
                catch (Exception ex) 
                { 
                    trans.Rollback("TransModify"); 
                    throw ex; 
                } 
      

  2.   

    MARK.
      

  3.   

    你可以先试试,请求没有对应的 BEGIN TRANSACTION”错误应该对应的是说还没有创建该事物或者创建该事物的时候就已经出错,当后面遇到问题时找不到该事物肯定就报错了。