我要在一个事物中执行insert和select两个操作后提交  如下:
DataSet ds = new DataSet();
OleDbConnection cn = CPub_DBConn.GetConn();
cn.Open();
OleDbTransaction stran = cn.BeginTransaction();
OleDbCommand myCommand = new OleDbCommand("insert into GRAPH_TEMP values('a')", cn);
myCommand.ExecuteNonQuery();
OleDbDataAdapter da = new OleDbDataAdapter("select NAME from GRAPH_TEMP",cn);
da.Fill(ds,"GRAPH_TEMP");
stran.Commit();
cn.Close();
报错:当分配给命令的连接处于挂起的本地事物中时,命令必须具有事物对象才能执行。该命令的transation属性尚未初始化。
请问应该怎么改我的代码啊?谢谢

解决方案 »

  1.   

    看看例程吧public void RunSqlTransaction(string myConnString)
     {
        SqlConnection myConnection = new SqlConnection(myConnString);
        myConnection.Open();    SqlCommand myCommand = myConnection.CreateCommand();
        SqlTransaction myTrans;    // Start a local transaction
        myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");
        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        myCommand.Connection = myConnection;
        myCommand.Transaction = myTrans;    try
        {
          myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
          myCommand.ExecuteNonQuery();
          myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
          myCommand.ExecuteNonQuery();
          myTrans.Commit();
          Console.WriteLine("Both records are written to database.");
        }
        catch(Exception e)
        {
          try
          {
            myTrans.Rollback("SampleTransaction");
          }
          catch (SqlException ex)
          {
            if (myTrans.Connection != null)
            {
              Console.WriteLine("An exception of type " + ex.GetType() +
                                " was encountered while attempting to roll back the transaction.");
            }
          }
        
          Console.WriteLine("An exception of type " + e.GetType() +
                            " was encountered while inserting the data.");
          Console.WriteLine("Neither record was written to database.");
        }
        finally 
        {
          myConnection.Close();
        }
    }
      

  2.   

    你对connect开了事务。但是在创建command时候没有把事务传进去
    你试试看这样
    DataSet ds = new DataSet();
    OleDbConnection cn = CPub_DBConn.GetConn();
    cn.Open();
    OleDbTransaction stran = cn.BeginTransaction();
    OleDbCommand myCommand = new OleDbCommand("insert into GRAPH_TEMP values('a')", cn,stran );
    myCommand.ExecuteNonQuery();
    OleDbDataAdapter da = new OleDbDataAdapter("select NAME from GRAPH_TEMP",cn,stran );
    da.Fill(ds,"GRAPH_TEMP");
    stran.Commit();
    cn.Close();
      

  3.   

    OleDbDataAdapter da = new OleDbDataAdapter("select NAME from GRAPH_TEMP",cn,stran );
    哪有这样的方法重载啊?不对吧
      

  4.   

    写错了检索的时候这样写
    OleDbCommand selectCommand = new OleDbCommand("select NAME from GRAPH_TEMP",cn,stran );
    OleDbDataAdapter da = new OleDbDataAdapter(selectCommand );
    da.Fill(ds,"GRAPH_TEMP");
      

  5.   

    不行还是:当分配给命令的连接处于挂起的本地事物中时,命令必须具有事物对象才能执行。该命令的transation属性尚未初始化。
      

  6.   

    DataSet ds = new DataSet();
    OleDbConnection cn = new OleDbConnection("Provider=SQLOLEDB.1;Persist Security Info=False;Data Source=192.160.10.75;Initial Catalog=Northwind;User ID=sa;Password=sa");
    cn.Open();
    OleDbTransaction stran = cn.BeginTransaction();
    OleDbCommand myCommand = new OleDbCommand("insert into Employees(LastName,FirstName) values('TestL','TestF')", cn,stran );
    myCommand.ExecuteNonQuery();
    OleDbCommand selectCommand = new OleDbCommand("select LastName from Employees",cn,stran );
    OleDbDataAdapter da = new OleDbDataAdapter(selectCommand );
    da.Fill(ds,"GRAPH_TEMP");
    stran.Commit();
    cn.Close();以上在我的机器上通过
      

  7.   

    .
    .在OleDbTransaction stran = cn.BeginTransaction()后
    加上:
    myCommand.Connection = myConnection
    myCommand.Transcation = stran
    .
    .
    .
      

  8.   

    楼主这个问题不是已经解决了吗?
    http://community.csdn.net/Expert/topic/4073/4073467.xml?temp=.381756