http://vietjack.com/java_jdbc/index.jsp Copyright © vietjack.com Batch Processing JDBC Batch Processing nhóm lệnh có liên quan vào batch đệ trình chúng Trong đó, thao tác lệnh chương trình thực thi liên tiếp mà khơng cần can thiệp người dùng Việc ứng dụng Batch Processing sở liệu tiện lợi Khi bạn gửi số lệnh SQL lúc, bạn giảm chi phí thời gian giao tiếp nâng cao hiệu suất Các JDBC Driver không yêu cầu phải thiết hỗ trợ tính Để biết xem Driver bạn có hỗ trợ tính hay khơng, bạn sử dụng phương thứcDatabaseMetaData.supportsBatchUpdates(): trả true hỗ trợ false không Dưới số phương thức giúp bạn ứng dụng Batch Processing: void addBatch(String sql)throws SQLException Phương thức addBatch() Statement sử dụng để thêm lệnh đơn tới batch Tham số sql lệnh INSERT UPDATE Phương thức không gọi đối tượng PreparedStatement CallableStatement int[] executeBatch()throws SQLException Phương thức executeBatch() sử dụng để bắt đầu thực thi tất lệnh nhóm lại với Các phần tử mảng trả phương thức là: • Một giá trị lớn lệnh thực thi thành công Và giá trị (gọi update count) số hàng sở liệu bị tác động thực thi lệnh • Một giá trị SUCCESS_NO_INFO lệnh thực thi thành công số hàng bị tác động lệnh • Một giá trị EXECUTE_FAILED lệnh thực thi thất bại 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 void clearBatch()throws SQLException Phương thức clearBatch() sử dụng để xóa lệnh thêm khỏi batch Phương thức xóa tất lệnh danh sách thêm vào batch Sử dụng Batch Processing với đối tượng Statement Dưới bước để sử dụng Batch Processing với đối tượng Statement: • Tạo đối tượng Statement sử dụng phương thức createStatement() • Sử dụng phương thức setAutoCommit() để thiết lập chế độ auto-commit false • Thêm lệnh SQL mà bạn muốn vào batch sử dụng phương thứcaddBatch() đối tượng Statement tạo • Thực thi tất lệnh sử dụng phương thức executeBatch() đối tượng Statement • Cuối cùng, bạn ký thác thay đổi với phương thức commit() Ví dụ Dưới ví dụ Batch Processing với đối tượng Statement JDBC: package com.vietjack.jdbc; // Import required packages 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{ // Register JDBC driver Class.forName("com.mysql.jdbc.Driver"); // Open a connection System.out.println("Dang ket noi toi co so du lieu "); conn = DriverManager.getConnection(DB_URL,USER,PASS); // Create statement System.out.println("Tao cac lenh truy van SQL "); stmt = conn.createStatement(); // Thiet lap auto-commit la false conn.setAutoCommit(false); // Dau tien, lua chon tat ca ban ghi va hien thi chung printRows( stmt ); // Tao lenh SQL String SQL = "INSERT INTO sinhvienk60 (mssv, ho, ten, diemthi) " + "VALUES (4,'Hoang Manh', 'Tung', 10)"; // Them lenh SQL tren vao batch stmt.addBatch(SQL); // Tao them mot lenh SQL nua SQL = "INSERT INTO sinhvienk60 (mssv, ho, ten, diemthi) " + "VALUES (5,'Nong Duc', 'Minh', 6)"; // Them lenh SQL tren vao batch stmt.addBatch(SQL); // Tao them mot lenh SQL nua SQL = "UPDATE sinhvienk60 SET diemthi = 10 " + "WHERE mssv = 2"; // Them lenh SQL tren vao batch stmt.addBatch(SQL); // Tao mot mang 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 int[] de giu cac gia tri tra ve int[] count = stmt.executeBatch(); // Thuc thi lenh commit de ky thac cac thay doi conn.commit(); // Bay gio, lua chon tat ca cac ban ghi va hien thi chung printRows( stmt ); // Don sach moi truong va giai phong resource stmt.close(); conn.close(); }catch(SQLException se){ // Xu ly cac loi cho JDBC se.printStackTrace(); }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 printRows(Statement stmt) throws SQLException{ System.out.println("\nHien thi cac ban ghi co san "); // Lua chon tat ca ban ghi va hien thi String sql = "SELECT mssv, ho, ten, diemthi FROM sinhvienk60"; ResultSet rs = stmt.executeQuery(sql); 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(); rs.close(); }// Ket thuc printRows() }// Ket thuc ViDuJDBC Sao chép dán ví dụ ViDuJDBC.java, sau biên dịch 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í ... thức clearBatch() sử dụng để xóa lệnh thêm khỏi batch Phương thức xóa tất lệnh danh sách thêm vào batch Sử dụng Batch Processing với đối tượng Statement Dưới bước để sử dụng Batch Processing. .. commit() Ví dụ Dưới ví dụ Batch Processing với đối tượng Statement JDBC: package com.vietjack .jdbc; // Import required packages import java.sql.*; public class ViDuJDBC { // Ten cua driver va... auto-commit false • Thêm lệnh SQL mà bạn muốn vào batch sử dụng phương thứcaddBatch() đối tượng Statement tạo • Thực thi tất lệnh sử dụng phương thức executeBatch() đối tượng Statement • Cuối cùng, bạn