下面是我程序用到的的事务,vb.net
Dim transCheck As OleDbTransaction = Conn.BeginTransaction
Comm.Connection = Conn
Comm.Transaction = transCheck
Try
......

解决方案 »

  1.   

    先把第一个DataReader关掉
    在用
    SqlCommand a2=new SqlCommand("Select * From [Role]",a);
    a2.ExecuteReader();
      

  2.   

    怎么关,用Dispose()后照样出错.
      

  3.   

    use transaction for "SELECT"? try (did not test, so it may not work):  System.Data.SqlClient.SqlConnection a=Getcnn();
      System.Data.SqlClient.SqlTransaction tr;
      tr=a.BeginTransaction();
      SqlCommand a1=new SqlCommand("Select * From [Position]",a,tr);
      SqlDataReader dr = a1.ExecuteReader();
      dr.Close();  SqlCommand a2=new SqlCommand("Select * From [Role]",a, tr);
      dr = a2.ExecuteReader();
      dr.Close();
      tr.Commit();
      

  4.   

    因为SqlDataReader是保持连接的,所以在第二次执行executereader的时候,必须先释放 连接
      

  5.   

    因为连接的对象已经打开了事务,它对应的所以有COMMAND都要加入事务才能运行。
      

  6.   

    一个连接只可以打开用DATAREADER
      

  7.   

    我想你应该先看一看reader 的用法:)
    saucer(思归) 已经把代码都写了,我这里补充一下:
    执行COMMAND有返回reader ,返回第一行第一列的值和不返回任何值三种,
    选用reader时必须创建reader的实例,然后用它来实际的获取数据,用后关闭