RowSet Interface trong JDBC
Nếu cần thao tác với JavaBean, bạn nên sử dụng Interface này. Nó bổ sung sự hỗ trợ cho JDBC tới mô hình thành phần trong JavaBean. Rowset Interface cung cấp một tập hợp các thuộc tính của JavaBean cho phép một instance của RowSet để được cấu hình để kết nối tới một Data source của JDBC và đọc dữ liệu từ Data source đó.
Để truyền dữ liệu đầu vào tới thuộc tính command của một Rowset, bạn sử dụng các phương thức setter bao gồm setInt, setBytes, setString, … Command này là truy vấn SQL mà Rowset sử dụng khi nó lấy dữ liệu từ một Relational Database.
Dưới đây là cách để tạo và thực thi RowSet:
JdbcRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet(); rowSet.setUrl("jdbc:mysql://localhost/sinhvien"); rowSet.setUsername("root"); rowSet.setPassword("123456"); rowSet.setCommand("SELECT * FROM sinhvienk60"); rowSet.execute();
Đây là cách thức mới để lấy instance của Rowset bắt đầu từ JDK7.
Sử dụng RowSet mang lại cho bạn các lợi thế sau:
Sử dụng dễ dàng và linh động.
Theo mặc định, nó là Scrollable và Updatable.
Ví dụ về RowSet trong JDBC
RowSet hỗ trợ xử lý sự kiện, tuy nhiên để đơn giản, trong ví dụ đầu tiên này, mình sẽ không đề cập đến phần code để thực hiện tác vụ này.
package com.vietjack.jdbc; import javax.sql.rowset.JdbcRowSet; import javax.sql.rowset.RowSetProvider; public class ViDuJDBC { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); //Tao va thuc thi RowSet JdbcRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet(); rowSet.setUrl("jdbc:mysql://localhost/sinhvien"); rowSet.setUsername("root"); rowSet.setPassword("123456"); rowSet.setCommand("SELECT * FROM sinhvienk60"); rowSet.execute(); while (rowSet.next()) { // Tao su kien con tro di chuyen System.out.println("\nMSSV: " + rowSet.getInt(1)); System.out.println("\nHo: " + rowSet.getString(2)); System.out.println("\nTen: " + rowSet.getString(3)); System.out.println("\nDiem thi: " + rowSet.getInt(4)); } } }
Bạn sao chép, dán và lưu ví dụ trong ViDuJDBC.java, sau đó chạy chương trình Java trên sẽ cho kết quả:
Ví dụ RowSet về xử lý sự kiện
Để thực hiện xử lý sự kiện với RowSet, bạn cần bổ sung thêm instance của RowSetLintener trong phương thức addRowSetListener của RowSet.
Bạn cần triển khai 3 phương thức sau của RowSetListenner Interface:
public void cursorMoved(RowSetEvent event);
public void rowChanged(RowSetEvent event);
public void rowSetChanged(RowSetEvent event);
Bây giờ, bạn theo dõi ví dụ sau. Trong ví dụ này, chúng ta lấy dữ liệu và thực hiện một số tác vụ bổ sung trong khi con trỏ di chuyển, thay đổi hoặc khi rowset thay đổi. Hoạt động xử lý ngoại lệ không thể được thực hiện bởi sử dụng ResultSet.
package com.vietjack.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.sql.RowSetEvent; import javax.sql.RowSetListener; import javax.sql.rowset.JdbcRowSet; import javax.sql.rowset.RowSetProvider; public class ViDuJDBC { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); //Creating and Executing RowSet JdbcRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet(); rowSet.setUrl("jdbc:mysql://localhost/sinhvien"); rowSet.setUsername("root"); rowSet.setPassword("123456"); rowSet.setCommand("SELECT * FROM sinhvienk60"); rowSet.execute(); //Bo sung them Listener va di chuyen qua RowSet rowSet.addRowSetListener(new MyListener()); while (rowSet.next()) { // Tao su kien con tro di chuyen System.out.println("\nMSSV: " + rowSet.getInt(1)); System.out.println("\nHo: " + rowSet.getString(2)); System.out.println("\nTen: " + rowSet.getString(3)); System.out.println("\nDiem thi: " + rowSet.getInt(4)); } } } class MyListener implements RowSetListener { public void cursorMoved(RowSetEvent event) { System.out.println("\nCon tro di chuyen ..."); } public void rowChanged(RowSetEvent event) { System.out.println("\n Con tro thay doi ..."); } public void rowSetChanged(RowSetEvent event) { System.out.println("\nRowSet thay doi..."); } }
Bạn sao chép, dán và lưu ví dụ trong ViDuJDBC.java, sau đó chạy chương trình Java trên sẽ cho kết quả:
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập doanh nghiệp với Java. Khóa học có giá chỉ 400K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp chị Thu, trợ lý anh Tuyền để hỗ trợ thanh toán qua mã QR ngân hàng Việt Nam, fb: https://www.facebook.com/Thule.59
Anh Tuyền, tác giả khóa học, là cựu sinh viên chương trình đào tạo kĩ sư tài năng của đại học Bách Khoa Hà Nội với hơn 5 năm kinh nghiệm đi làm thực tế doanh nghiệp và cũng là Founder website vietjack.com, web giáo dục phổ biến nhất Việt Nam hiện tại (năm 2024). Java cũng là ngôn ngữ lập trình dễ đi xin việc nhất hiện tại, với mức lương cao, hãy nâng cao kiến thức IT của bản thân mình vì một Việt Nam giàu mạnh.
Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com
Bài học Java phổ biến tại vietjack.com:
Demo một bài giảng trong khóa học online tại vietjackteam.