http://vietjack.com/java_jdbc/index.jsp Copyright © vietjack.com Ví dụ Savepoint JDBC Chương trước, bạn thấy cách sử dụng phương thức rollback() để xóa tất thay đổi quay trở trạng thái trước ký thác Với tình xảy lỗi logic xuất gần phần cuối phần giao tác, bạn phải xóa bỏ tất để quay trạng thái trước Điều thật lãng phí thời gian vất vả Bây bạn sử dụng setSavepoint(String ten_cua_savepoint) để định nghĩa savepoint có lỗi xảy khu vực savepoint nào, bạn quay savepoint với phương thức rollback(String ten_cua_savepoint) Điều đem lại cho bạn tiện lợi nâng cao hiệu suất nhiều Dưới ví dụ minh họa cho việc sử dụng savepoint JDBC: package com.vietjack.jdbc; //Buoc 1: Ban can inport cac package can thiet import java.sql.*; public class ViDuJDBC { // Ten cua driver va dia chi URL cua co so du lieu static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/sinhvien"; // Ten nguoi dung va mat khau cua co so du lieu static final String USER = "root"; static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ // Buoc 2: Dang ky Driver Class.forName("com.mysql.jdbc.Driver"); // Buoc 3: Mo mot ket noi System.out.println("Dang ket noi toi co so du lieu "); conn = DriverManager.getConnection(DB_URL,USER,PASS); // Buoc 4: Thiet lap auto commit la false conn.setAutoCommit(false); // Buoc 5: Thuc thi truy van System.out.println("Tao cac lenh truy van SQL "); stmt = conn.createStatement(); // Buoc 6: Liet ke tat ca ban ghi co san String sql = "SELECT mssv, ho, ten, diemthi FROM sinhvienk60"; ResultSet rs = stmt.executeQuery(sql); System.out.println("Liet ke result set de tham chieu "); printRs(rs); // Buoc 7: Xoa cac hang co mssv > // Chung ta tao savepoint truoc thuc hien hoat dong Savepoint savepoint1 = conn.setSavepoint("ROWS_DELETED_1"); System.out.println("\nXoa hang "); String SQL = "DELETE FROM sinhvienk60 " + "WHERE mssv=3"; stmt.executeUpdate(SQL); // Oh my God Chung ta da xoa sai sinh vien! // Buoc 8: Rollback cac thay doi sau save point conn.rollback(savepoint1); // Buoc 9: Xoa cac hang co mssv > // Chung ta tao savepoint truoc thuc hien hoat dong Savepoint savepoint2 = conn.setSavepoint("ROWS_DELETED_2"); System.out.println("\nXoa hang "); SQL = "DELETE FROM sinhvienk60 " + "WHERE mssv=1"; stmt.executeUpdate(SQL); // Buoc 10: Liet ke tat ca ban ghi co san sql = "SELECT mssv, ho, ten, diemthi FROM sinhvienk60"; rs = stmt.executeQuery(sql); System.out.println("\nLiet ke result set de tham chieu "); printRs(rs); // Buoc 10: Don sach moi truong va giai phong resource rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ // Xu ly cac loi cho JDBC http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/java_jdbc/index.jsp Copyright © vietjack.com se.printStackTrace(); // Neu xuat hien loi thi xoa sach cac thay doi // va tro ve trang thai truoc co thay doi System.out.println("\nRollback tai day "); try{ if(conn!=null) conn.rollback(); }catch(SQLException se2){ se2.printStackTrace(); }// Ket thuc khoi try }catch(Exception e){ // Xu ly cac loi cho Class.forName e.printStackTrace(); }finally{ // Khoi finally duoc su dung de dong cac resource try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ } try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); }// Ket thuc khoi finally }// Ket thuc khoi try System.out.println("\nVietJack chuc cac ban hoc tot!"); }// Ket thuc main public static void printRs(ResultSet rs) throws SQLException{ // Bao dam rang ban bat dau tu hang dau tien rs.beforeFirst(); while(rs.next()){ // Lay du lieu boi su dung ten cot int mssv = rs.getInt("mssv"); int diemthi = rs.getInt("diemthi"); String ho = rs.getString("ho"); String ten = rs.getString("ten"); // Hien thi cac gia tri System.out.print("\nMSSV: " + mssv); System.out.print("\nHo: " + ho); System.out.println("\nTen: " + ten); System.out.print("\nDiem Thi: " + diemthi); System.out.print("\n================="); } System.out.println(); }// Ket thuc printRs() }// Ket thuc ViDuJDBC Bạn chép, dán lưu ví dụ ViDuJDBC.java, sau chạy chương trình Java cho kết quả: http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/java_jdbc/index.jsp Copyright © vietjack.com http://vietjack.com/ Trang chia sẻ các bài học online miễn phí ... System.out.println(); }// Ket thuc printRs() }// Ket thuc ViDuJDBC Bạn chép, dán lưu ví dụ ViDuJDBC.java, sau chạy chương trình Java cho kết quả: http://vietjack.com/ ... http://vietjack.com/java _jdbc/ index.jsp Copyright © vietjack.com http://vietjack.com/...http://vietjack.com/java _jdbc/ index.jsp Copyright © vietjack.com