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:

Quảng cáo
  • 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ả:

RowSet trong JDBC
Quảng cáo

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ả:

RowSet trong JDBC

Đã 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 Java. Khóa học có giá chỉ 300K, 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 a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.



Demo một bài giảng trong khóa học online tại vietjackteam.


Tài liệu giáo viên