Sử dụng Transaction trên JDBC


Như đã nêu ở bài trước bài này chúng ta sẽ làm ví dụ về quản lý Transaction và batch execute trên jdbc.

JDBC cho phép thực thì hàng loạt thao tác trong một lần gởi yêu cần về server dữ liệu (batch).

Chúng ta ví dụ thêm dữ liệu và 02 bảng đồng thời (Semester và Subject của bài trước).

1 Connection conn; 2 conn = DriverManager.getConnection(jdbc:sqlserver://localhost;user=sa;password=sa;database=java;); 3 // khoi tao transaction 4 conn.setAutoCommit(false); 5 Statement command = conn.createStatement(); 6 command.addBatch(insert into semester(id,name) values(1,’Semester 1′)); 7 command.addBatch(insert into subject(id,sem_id,name) values(1,1,’HTML’)); 8 command.addBatch(insert into subject(id,sem_id,name) values(2,1,’Java’)); 9 command.addBatch(insert into subject(id,sem_id,name) values(2,1,’csharpe’)); 10 command.executeBatch(); 11 // cap nhat thay doi du lieu ve server 12 conn.setAutoCommit(true);

Nhìn vào đoạn mã trên chúng ta thấy rằng sẽ có 03 dòng dữ liệu được thêm vào hệ thống nhưng dòng cuối cùng thì lỗi trùng khóa chính. Với lệnh

1 conn.setAutoCommit(false);

Chúng ta đã báo cho jdbc biết rằng những thay đổi mà chúng ta đã thực hiện thì chỉ được chấp nhận khi nào chúng ta gọi lệnh

1 conn.setAutoCommit(true);

Do đó, khi chạy ứng dụng chúng ta sẽ kg có dòng nào được thêm vào dữ liệu ở đây do dòng 09 phát sinh lỗi nên dòng 12 sẽ không được thực thi.

Advertisements

Phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s