可能是在你的某个操作中开始了一个事务但没有使用提交或回滚这个事务.
或者你在使用ExecuteReader的Command命令中使用在其它命令中的事务.

解决方案 »

  1.   

    其实我整个Form1都没有使用过ExecuteReader. 我绝对写了 ston.Commit();还有 RollBack();简单点说代码类似下面:
    Sqlconnection conn=new Sqlconnection(str);
    Sqlcommand cmd=conn.CreateCommand();
    SqlTransaction ston;
    conn.open();
    Ston=Conn.BeginTransaction();
    cmd.Transaction=ston;
    try
    {
       ....................
       cmd.executenonquery();
       ......................
      cmd.ExecuteNonQuery();
    ston.commit();
    }
    catch()
    {
      ston.RollBack();
    }
    finally
    {
       conn.close();
    } open();
    ston=conn.BeginTransaction();
    cmd.Transaction=ston;
    try
    {
       .................
       cmd.ExecuteNonQuery();
       ...................
       cmd.ExecuteNonQuery();
      ston.commit();
    }catch()
    {
       Ston.Rollback();
    }finally
    {
      conn.close();
    }
      

  2.   

    那么情况可能是这样的,当你使用conn.BeginTransaction()开始事务后,那么每一个和这个conn相关联的Command都应使用这个事务,如果不使用可能就出这个提示了.你再检查一下是这种情况吗?
      

  3.   

    hbxtlhx(平民百姓-自已动手,丰衣足食)你的意思其实我明白... 但是这里已经是按照你说的啦. 同一个SqlConnection同一个SqlCommand  同一个SqlTransaction
      

  4.   

    我的意思是如果操作用的是同一个conn的事务,那么当使用这个conn的关联的Command的时候这些Command都要使用这个事务才可以,因为这样才能保证操作的事务是完整的.
      

  5.   

    实在不行,第二部分再new一个cmd
      

  6.   

    我已经试过全部都NEW一个新的了...
      

  7.   

    我才知道事务这个东西。不太清处。不知道有好心朋友能给解说下吗。
                    mycomm.Transaction = myT特别这句不太明白是什么意思
    能给个例子给我吗。带有解说的。最好是用VB写的。谢谢
    [email protected]发到我的邮箱里。谢谢了
      

  8.   

    我用了dataadapter和dataset,然后又用了command,就出现了上面的错误,是怎么回事啊??
      

  9.   

    try 

          .................... 
          cmd.executenonquery(); 
          ...................... 
        cmd.ExecuteNonQuery(); 
    ston.commit(); 
    }问题很可能出在你打省略号的地方,如果你这里有这样的语句:cmd=new SqlCommand()
    就会报这样的错误。
    你应该使用:cmd.CommandText="Update等语句";
      

  10.   

    虽然这个问题已经是很久前的,但都要回答一下,让后来的学习的人能够知道原因。其实这个错误原因很简单,当你的Command对象要调用一个Transaction(事务),那么你的这个事务必须先初始化后,再赋值给Command对象的Transaction属性;初始化语句一般为:SqlTransaction trans; 
    trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
      

  11.   

    我今天也遇到这样的问题 !!最后我解决的方法是没有提交事务
    你的事务提交的时候不对  
    try 

          .................... 
          cmd.executenonquery(); 
          ...................... 
        cmd.ExecuteNonQuery(); 
    ston.commit(); 

    catch() 

        ston.RollBack(); 

    finally 

          conn.close(); 
    }  
     这是你的代码  
    试试看把ston.commit(); 放在try{} catch{} finally{}  后面 
      

  12.   

    就是先判断一下 cmd.ExecuteNonQuery(); 这个的返回值 如果是这个值是 符合数据库要求 那么就提交,否则就回滚