事务执行,插入两张表,事务执行时,有时一个表没有插入数据,但另一个却插入数据了(不是在本地运行,在网络上运做) 
以下是代码: protected void Button4_Click(object sender, EventArgs e) 
    { 
        string connectionString = WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; 
        using (SqlConnection testConnection = new SqlConnection(connectionString)) 
        { 
            SqlCommand myCommand = testConnection.CreateCommand(); 
            SqlTransaction myTransaction = null; 
            try 
            { 
                testConnection.Open(); 
                myTransaction = testConnection.BeginTransaction(); 
                myCommand.Transaction = myTransaction; 
                myCommand.CommandText = "insert into tbTbone (name,type) values ("aaa","gf")"; 
                myCommand.ExecuteNonQuery(); 
                myCommand.CommandText = "insert into tbtwo (name,type) values ("bbb","hf")"; 
                myCommand.ExecuteNonQuery(); 
                myTransaction.Commit(); 
                Response.Write("执行成功!"); 
            } 
            catch (System.Exception) 
            { 
                myTransaction.Rollback(); 
                Response.Write("没有执行!"); 
            } 
            finally 
            { 
                testConnection.Close(); 
            } 
        } 
    } 
本地测试的时候,两张表都能插入成功的,放到网上正式用的时候,有时候能两张表都插入成功,有时候只有一张表插入成功,还有一张表没数据,不知道怎么回事啊。help啊。。

解决方案 »

  1.   

    程序应该没什么问题,
    创建事务一般在try外面,我一般都这样,没什么问题,你试试!!
               SqlCommand myCommand = testConnection.CreateCommand(); 
               testConnection.Open(); 
               SqlTransaction myTransaction = testConnection.BeginTransaction(); 
               myCommand.Transaction = myTransaction; 
                try 
                { 
                    myCommand.CommandText = "insert into tbTbone (name,type) values ("aaa","gf")"; 
                    myCommand.ExecuteNonQuery(); 
                    myCommand.CommandText = "insert into tbtwo (name,type) values ("bbb","hf")"; 
                    myCommand.ExecuteNonQuery(); 
                    myTransaction.Commit(); 
                    Response.Write("执行成功!"); 
                } 
      

  2.   

    没问题。吧。。一个表不成功也应该rollback
      

  3.   

    1试下1楼的方法 如果还不行就 
    string sql="
    insert into tbTbone (name,type) values ("aaa","gf");insert into tbtwo (name,type) values ("bbb","hf")";
    myCommand.CommandText=sql;
    把两个合成一个sql语句试下
      

  4.   

    可能执行成功吗?
    values ("aaa","gf")
      

  5.   

    myCommand.CommandText = "insert into tbTbone (name,type) values ("aaa","gf")";
                    myCommand.ExecuteNonQuery();
                    myCommand.CommandText = "insert into tbtwo (name,type) values ("bbb","hf")"; 能执行成功那就邪门了