只要加上带注释的关于事务的三行,就提示无效操作protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("server=.;database=pubs;uid=sa;pwd=sa;");
        SqlTransaction tran = con.BeginTransaction();//定义一个事务
        try
        {
            con.Open();
            SqlDataAdapter adp = new SqlDataAdapter("select * from authors", con);
            DataSet ds = new DataSet();
            adp.Fill(ds, "b");
            GridView1.DataSource = ds.Tables["b"];
            GridView1.DataBind();
            tran.Commit();//提交
        }
        catch
        {
            tran.Rollback();//回滚
        }
        finally
        {
            con.Close();
        }
    }

解决方案 »

  1.   

    晕倒,当然无效了!事务是要修改数据的情况下,你select没有必要用事务的。
      

  2.   

    事务是为了保证对数据的修改,作为一个原子单位提交才提出来的。例如要转账,必须A账户扣款交易成功,而且B账户入账交易成功,两者有一个失败,就要回滚,因此这两个涉及数据修改的操作要作为事务处理。你现在只有select,当然报错。
      

  3.   

    不太懂数据库方面的,但是
    tran.Commit();//提交
    这个是不是多余了啊。你查询而已,提交啥?
      

  4.   

    using(SqlConnection con = new SqlConnection(""))
      {
      conn.Open();
      SqlCommand comm = conn.CreateCommand();
      SqlTransaction trans = conn.BeginTransaction();
      comm.Transaction = trans;
      try
      {
      ...
      trans.Commit();
      }
      catch (Exception ex)
      {
      trans.Rollback();
      }
    }
    conn.Close();
    这样使用事务处理