首先你的代码有问题。不过使用事务的基本步骤如下:
SqlConnection conn=new SqlConnection(connectionString);
conn.Open();
SqlTransaction trans=conn.BeginTransaction();//如果你使用了适配器,那么如下
SqlDataAdapter sda=new SqlDataAdapter();
sda.UpdateCommand.Transaction=trans;
sda.Update(dataSet);
trans.Commit();
//如果不使用适配器
SqlCommand comm=new SqlCommand();
comm.CommandText=UpdateString;
comm.Transaction=trans;
comm.ExecuteNoneQuery();
trans.Commit()//最后
conn.Close()你的代码首先是重复了给CommandText赋值,这个没有必要。
其次是你的CommandText无法使用在SqlDataAdapter的Update函数中。所以就算正确的使用了事务,也是无法正常运行的。

解决方案 »

  1.   

    我的程序如下:
    this.conn.Open();   --数据库连接
    System.Data.OleDb.OleDbTransaction myTransaction=this.cnn.BeginTransaction();
    System.Data.OleDb.OleDbCommand myCommand=new System.Data.OleDb.OleDbCommand       ("更新语句",conn,myTransaction);try
    {
      myCommand.ExecuteNonQuery();                                    --语句更新一个表
      this.oddaBaseWageChange.UpdateCommand.Transaction=myTransaction; --适配器更新一个表
      myTransaction.Commit();
    }
    catch
    {...}
    finally
    {...}出错提示:当分配给命令的连接处于挂起的本地事务中时,命令必须具有事务对象才能执行。该命令的 Transaction 属性尚未初始化。
    有解吗??
      

  2.   

    把this.oddaBaseWageChange.UpdateCommand.Transaction=myTransaction一句放在System.Data.OleDb.OleDbCommand myCommand=new System.Data.OleDb.OleDbCommand       ("更新语句",conn,myTransaction);之后
      

  3.   

    把UpdateCommand的Connection指向this.cnn
      

  4.   

    UpdateCommand的Connection已经指向连接this.cnn,且已打开
      

  5.   

    低级错误:
      this.oddaBaseWageChange.UpdateCommand.Transaction=myTransaction; 
    应为:
      this.oddaBaseWageChange.InsertCommand.Transaction=myTransaction;
      

  6.   

    低级错误:
      this.oddaBaseWageChange.UpdateCommand.Transaction=myTransaction; 
    应为:
      this.oddaBaseWageChange.InsertCommand.Transaction=myTransaction;