Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 30 kết quả

Đề tài: Lỗi ko thể rollback của transtionscope!!!!

  1. #1
    Ngày gia nhập
    06 2011
    Bài viết
    277

    Mặc định Lỗi ko thể rollback của transtionscope!!!!

    Code:
    using (TransactionScope scope = new TransactionScope())                            
                                {    
                                    clss_gd.themtknop();
                                    clss_pnop.thempnop();
                                    clss_tk.Suatk();
                                    if (dtb_sk.Rows.Count == 0)
                                        clss_saoke.themsk();
                                    else
                                        clss_saoke.Suask();
                                    scope.Complete();
                                }
    Đây là đoạn code của mình !!
    Theo như mình biết thì sql sẽ tự rollback lại khi 1 hàm trong những dòng trên của mình bị lỗi.
    Ko hiểu sao Khi mình chạy thử thì khi 1 cái bị lỗi những cái khác vẫn lưu vào SQL, nó ko tự RollBack đc.
    Ai chỉ mình lỗi chỗ nào với !!! hichic

  2. #2
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Bác thay vào thế này: using (TransactionScope scope= new TransactionScope(TransactionScopeOption.Suppress))
    K hiểu sao bài liên quan cái này liên tục bị mod del.

  3. #3
    Ngày gia nhập
    06 2011
    Bài viết
    277

    Trích dẫn Nguyên bản được gửi bởi Solewind.IT Xem bài viết
    Bác thay vào thế này: using (TransactionScope scope= new TransactionScope(TransactionScopeOption.Suppress))
    K hiểu sao bài liên quan cái này liên tục bị mod del.
    Uhm, ko hiểu sao cứ bị mode del wai!! hic

    Bữa bạn gửi mình cái kia. Mình có coi wa. Nó có chỉ cả cách dùng try/catch. Mà mình thử để nó ở trong thử rùi!! Nó cũng ko rollback đc lun!!! hic

  4. #4
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Mà h vẫn k dc hả? Vậy gửi cả code lên đi.

  5. #5
    Ngày gia nhập
    06 2011
    Bài viết
    277

    Trích dẫn Nguyên bản được gửi bởi Solewind.IT Xem bài viết
    Mà h vẫn k dc hả? Vậy gửi cả code lên đi.
    Vẫn ko đc...hic.
    Code:
       using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))                            
                                {    
                                    clss_gd.themtknop();
                                    clss_pnop.thempnop();
                                    clss_tk.Suatk();
                                    if (dtb_sk.Rows.Count == 0)
                                        clss_saoke.themsk();
                                    else
                                        clss_saoke.Suask();
                                    scope.Complete();
                                }
    Mình thử cho 1 cái bị lỗi thì nó ko chạy nữa , mình tắt và qua coi bên sql thì nó vẫn nhập vào!!! hichic

  6. #6
    Ngày gia nhập
    06 2011
    Bài viết
    277

    Mặc định Lỗi ko thể rollback của transtionscope!!!!

    Có cần phải mỗi lần gọi lại 1 hàm là phải tạo một biết connect mới ko ta???

  7. #7
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Nghe khoai nhỉ-dùng TransactionScopeOption.RequiresNew xem thế nào?

  8. #8
    Ngày gia nhập
    12 2007
    Bài viết
    52

    Dùng cái này nè

    Visual C# Code:
    1.       //Tạo đối tượng connection
    2.       connect.Open();
    3.       SqlTransaction transaction;
    4.       transaction = connect.BeginTransaction();
    5.       try
    6.       {
    7.          // Thực hiện lệnh
    8.          transaction.Commit(); // Approve lên DB nếu tất cả thành công
    9.       }
    10.       catch (Exception ex)
    11.       {
    12.          // Lỗi xảy ra, thì rollback những cái đã đăng ký lên DB
    13.          transaction.Rollback();
    14.       }
    15.       finally
    16.       {
    17.           if(connect.State là đang open)
    18.          {
    19.               // Đóng kết nối
    20.               connect.Close();
    21.          }
    22.       }

  9. #9
    Ngày gia nhập
    06 2011
    Bài viết
    277

    Trích dẫn Nguyên bản được gửi bởi Digit Life Xem bài viết
    Dùng cái này nè

    Visual C# Code:
    1.       //Tạo đối tượng connection
    2.       connect.Open();
    3.       SqlTransaction transaction;
    4.       transaction = connect.BeginTransaction();
    5.       try
    6.       {
    7.          // Thực hiện lệnh
    8.          transaction.Commit(); // Approve lên DB nếu tất cả thành công
    9.       }
    10.       catch (Exception ex)
    11.       {
    12.          // Lỗi xảy ra, thì rollback những cái đã đăng ký lên DB
    13.          transaction.Rollback();
    14.       }
    15.       finally
    16.       {
    17.           if(connect.State là đang open)
    18.          {
    19.               // Đóng kết nối
    20.               connect.Close();
    21.          }
    22.       }
    cái Này Mình đã làm rùi!!
    Cái này nó chỉ rollback đc 1 câu lệnh Sql àh, Ko thể làm nhiều cái cùng 1 lúc đc...hic

  10. #10
    Ngày gia nhập
    06 2011
    Bài viết
    93

    Trích dẫn Nguyên bản được gửi bởi linhgl88 Xem bài viết
    cái Này Mình đã làm rùi!!
    Cái này nó chỉ rollback đc 1 câu lệnh Sql àh, Ko thể làm nhiều cái cùng 1 lúc đc...hic
    Tại vì bạn không có set transaction vao từng câu lệnh cho nên nó mới không được.

    Visual C# Code:
    1. //Tạo đối tượng connection
    2.       connect.Open();
    3.       SqlTransaction transaction;
    4.       transaction = connect.BeginTransaction();
    5.       try
    6.       {
    7.          SqlCommand cmd1 = new SqlCommand(sql1, connection, transaction);
    8.          cmd1.ExecuteNonQuery();
    9.          SqlCommand cmd2 = new SqlCommand(sql2, connection, transaction);
    10.          cmd2.ExecuteNonQuery();
    11.          // ...
    12.          // Thực hiện lệnh
    13.          transaction.Commit(); // Approve lên DB nếu tất cả thành công
    14.       }
    15.       catch (Exception ex)
    16.       {
    17.          // Lỗi xảy ra, thì rollback những cái đã đăng ký lên DB
    18.          transaction.Rollback();
    19.       }
    20.       finally
    21.       {
    22.           if(connect.State là đang open)
    23.          {
    24.               // Đóng kết nối
    25.               connect.Close();
    26.          }
    27.       }

Các đề tài tương tự

  1. transaction, rollback cho C++ ???
    Gửi bởi aazz trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 10
    Bài viết cuối: 09-05-2010, 03:49 PM
  2. Hỏi về rollback transaction
    Gửi bởi xxria trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 13-08-2009, 07:11 AM
  3. Hỏi về rollback transaction
    Gửi bởi xxria trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 13
    Bài viết cuối: 19-06-2009, 11:18 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn