我看了看C#关于数据库操作的一些资料,大概知道了象下面这样调用一个事务,但又有新的问题产生了!
请大家再帮忙看看!谢谢了!
...
SqlConnection mySqlConnection=new SqlConnectioon("Server=...",...);//新建立一个连接
mySqlConnection.Open(); //打开连接SqlTransaction mySqlTransaction=mySqlConnection.BeginTransaction();  //事务开始SqlCommand mySqlCommand=mySqlConnection.CreateCommand();mySqlCommand.Transaction=mySqlTransaction;
mySqlCommand.CommandText("insert...");  //  第一个SQL语句
mySqlCommand.ExecuteNoQuery();mySqlCommand.CommandText("update...");  //  第二个SQL语句
mySqlCommand.ExecuteNoQuery();mySqlTransaction.Commit();  //提交这个事务mySqlConnection.Close();  //关闭这个连接
...
现在的问题是:
1.如何判断这个事务是否成功的执行了?我在程序中如何得到这个信息?
2.如果没有成功的执行,如何回滚这个事务?谢谢大家了!

解决方案 »

  1.   

    我的方法是
    i=mySqlCommand.ExecuteNoQuery(str1);
    j=mySqlCommand.ExecuteNoQuery(str2);
    if(i>0 && j>0)
         mySqlTransaction.Commit();
    else
         mySqlTransaction.Rollback();
      

  2.   

    to楼上的:
    在我的程序中,mySqlCommand.ExecuteNoQuery();没有参数啊!
    你的str1和str2是不是我的程序中对应的两个SQL语句?
    谢谢!
      

  3.   


    请参考下面的示例创建一个 SqlConnection 和一个 SqlTransaction。它还演示如何使用 BeginTransaction、Commit 和 Rollback 方法。 
    public void RunSqlTransaction(string myConnString) 
     {
        SqlConnection myConnection = new SqlConnection(myConnString);
        myConnection.Open();    SqlCommand myCommand = new SqlCommand();
        SqlTransaction myTrans;    // Start a local transaction
        myTrans = myConnection.BeginTransaction();
        // 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)
        {
          myTrans.Rollback();
          Console.WriteLine("Error: {1}", e.Message);
          Console.WriteLine("Error reported by {1}.", e.Source);
          Console.WriteLine("Neither record was written to database.");
        }
        finally
        {
          myConnection.Close();
        }
    }
    [