String lastcph = "";
        SqlConnection myConnection = new SqlConnection(EDb.CnnString);
        myConnection.Open();
        // 启动一个事务
        SqlTransaction myTrans = myConnection.BeginTransaction();
        // 为事务创建一个命令
        SqlCommand myCommand = new SqlCommand();
        myCommand.Connection = myConnection;
        myCommand.Transaction = myTrans;
        try
        {
           ...
            //如果我在这里 return 了,但前面有操作要不要影响数据库呢
           ...
          myTrans.Commit();
          
        }
        catch (Exception Ex)
        {
            myTrans.Rollback();
                  }        finally
        {
            myTrans.Dispose();
            myConnection.Close();
            myConnection.Dispose();
        }
        return null;

解决方案 »

  1.   

    这个不就要看你打算做什么了阿,需要的就Rollback阿,没有什么规定的
      

  2.   

    应该加rollback,因为事务已经开始了,你或者提交,或者回退
      

  3.   

    那也就是在我每一个 return 前面都是要 rollback 呢?
    这样不是很麻烦吗
    他应该是没有commit 前操作都会取消才对啊
      

  4.   

    现有的数据库系统如果不Commit,会自动Commit还是自动RollBack呢?
      

  5.   

     首先设置: con.setAutoCommit(false);
    try{
       ....   con.commit();
    }
    catch{
       con.rollback();
    }
    finally
    {
       this.closeCon();
    }
      

  6.   

    那也就是说写为try{ 
       .... 
       if(xxx)
       {
          con.rollback();
          return;         //每个return 前都要rollback了?????
       }
       ...
       con.commit(); 

    catch{ 
       con.rollback(); 

    finally 

       this.closeCon(); 

      

  7.   

    要加。但是事务里有那么多return感觉怪怪的。