Di chuyển trong ResultSet trong JDBC



Dưới đây là một số phương thức thường được sử dụng để di chuyển con trỏ trong ResultSet Interface.

1. public void beforeFirst() throws SQLException

Di chuyển con trỏ về trước hàng đầu tiên.

2. public void afterLast() throws SQLException

Di chuyển con trỏ về sau hàng cuối cùng.

3. public boolean first() throws SQLException

Di chuyển con trỏ về hàng đầu tiên.

4. public void last() throws SQLException

Di chuyển con trỏ về hàng cuối cùng.

5. public boolean absolute(int row) throws SQLException

Di chuyển con trỏ tới hàng đã cho.

6. public boolean relative(int row) throws SQLException

Di chuyển con trỏ tới hàng đã cho (trước hoặc sau) tính từ vị trí hiện tại.

7. public boolean previous() throws SQLException

Di chuyển con trỏ tới hàng trước đó. Phương thức trả về false nếu không có hàng ở trước.

8. public boolean next() throws SQLException

Di chuyển con trỏ tới hàng tiếp theo. Phương thức trả về false nếu không có hàng tiếp theo.

9. public int getRow() throws SQLException

Trả về số hàng mà con trỏ đang trỏ tới.

10. public void moveToInsertRow() throws SQLException

Di chuyển con trỏ tới một hàng đặc biệt trong ResultSet mà có thể được sử dụng để chèn một hàng mới vào trong cơ sở dữ liệu. Vị trí con trỏ hiện tại được ghi nhớ.

Ví dụ về di chuyển trong ResultSet

Dưới đây là ví dụ minh họa cách sử dụng của một số phương thức trên để di chuyển con trỏ trong ResultSet.

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: Thuc thi truy van 
     
      System.out.println("Tao cac lenh truy van SQL ...");
      stmt = conn.createStatement(
                           ResultSet.TYPE_SCROLL_INSENSITIVE,
                           ResultSet.CONCUR_READ_ONLY);
      String sql;
      sql = "SELECT mssv, ho, ten, diemthi FROM sinhvienk60";
      ResultSet rs = stmt.executeQuery(sql);      // Di chuyen con tro toi hang cuoi cung.
      System.out.println("\nDi chuyen con tro toi hang cuoi cung ...");
      rs.last();
      
      // Buoc 5: Lay du lieu tu Result Set
      System.out.println("Hien thi ban ghi ...");
      // 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=================");      // Di chuyen con tro toi hang dau tien.
      System.out.println("\nDi chuyen con tro toi hang dau tien ...");
      rs.first();
      
      // Buoc 6: Lay du lieu tu result set
      System.out.println("Hien thi ban ghi ...");
      // Lay du lieu boi su dung ten cot
      mssv  = rs.getInt("mssv");
      diemthi = rs.getInt("diemthi");
      ho = rs.getString("ho");
      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=================");
     // Di chuyen con tro toi hang tiep theo.      System.out.println("\nDi chuyen con tro toi hang tiep theo ...");
      rs.next();
      
      // Buoc 7: Lay du lieu tu result set
      mssv  = rs.getInt("mssv");
      diemthi = rs.getInt("diemthi");
      ho = rs.getString("ho");
      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=================");      // Buoc 8: Don sach moi truong va giai phong resource
      rs.close();
      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
}// Ket thuc ViDuJDBC

Sao chép và dán ví dụ trên trong ViDuJDBC.java, sau đó biên dịch và chạy chương trình Java trên sẽ cho kết quả sau:

Di chuyển trong Result Set trong JDBC

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