Monday, July 28, 2014

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.

No comments:

Post a Comment

Translate