06/04/2021, 14:47

Select MySQL bằng Java JDBC Driver - Java JDBC

Trong bài này bạn sẽ được học cách thực hiện truy vấn Select trong MySQL bằng cách sử dụng Java JDBC Driver. Đây là cách lấy danh sách dữ liệu table trong Java khá phổ biến. 1. Kết nối vào Database Để thực hiện được truy vấn này thì hãy chắc chắn rằng bạn đã ...

Trong bài này bạn sẽ được học cách thực hiện truy vấn Select trong MySQL bằng cách sử dụng Java JDBC Driver. Đây là cách lấy danh sách dữ liệu table trong Java khá phổ biến.

1. Kết nối vào Database

Để thực hiện được truy vấn này thì hãy chắc chắn rằng bạn đã kết nối vào MySQL nhé. Nếu chưa thì hãy đọc bài kết nối MySQL bằng Java JDBC Driver.

Connection conn = DriverManager.getConnection(url,username,password);

Ở bài đó mình đã tạo một lớp kết nối tên là MySQLJDBCUtil nên ta chỉ cần gọi phương thức kết nối từ lớp này là được. Thông số kết nối nằm trong file db.properties.

Connection conn = MySQLJDBCUtil.getConnection()

2. Tạo Statement

Sau khi kết nối xong thì hãy tạo một đối tượng Statement bằng cách sử dụng phương thức createStatement trong đối tượng conn đó.

Statement stmt  = conn.createStatement();

* Lưu ý: Khi đã tạo xong Statement thì bạn có thể thực hiện bất kì truy vấn SQL nào, không chỉ riêng gì Select.

Dưới đây là một ví dụ với lệnh Select.

String sql = "SELECT first_name, last_name, email " +
             "FROM candidates";

ResultSet rs    = stmt.executeQuery(sql)

Chúng ta đã gọi phương thức executeQuery() trong đối tượng Statement (stmt). Phương thức này có công dụng thực thi một câu truy vấn bất kì và trả kết quả về thuộc kiểu ResultSet.

ResultSet cung cấp cho bạn một số phương thức để duyệt qua từng record. Phương thức next() sẽ trả về record hiện tại và chuyển con trỏ sang record tiếp theo nếu danh sách có dữ liệu, ngược lại nó return false.

3. Lấy dữ liệu các field

Để lấy dữ liệu của các field thì tùy thuộc vào kiểu dữ liệu của field, công thức cơ bản đó là:

getDataType()

Ví dụ:

  • getString("column_name") dùng để lấy giá trị theo tên cột
  • getInt(1) dùng để lấy theo thứ tự của cột

Hãy xem ví dụ dưới đây để hiểu rõ hơn.

while (rs.next()) {
   System.out.println(rs.getString("first_name") + "	" + 
                      rs.getString("last_name")  + "	" +
                      rs.getString("email"));
                    
}

4. Đóng kết nối

Bạn nên thực hiện thao tác ngắt kết nối sau khi thực hiện xong truy vấn để đảm bảo an toàn nhé.

try{
   rs.close();
   stmt.close();
} catch(SQLException e) {
   System.out.println(e.getMessage());
}

Nếu bạn sử dụng khối lệnh try-with-resource thì nó sẽ tự động ngắt kết nối, bạn sẽ không phải lam gì cả.

Dưới đây là file tổng kết những gì mà mình đã giải thích ở trên, bằng cách sử dụng database mẫu.

package org.mysqltutorial;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author mysqltutorial.org
 */
public class Main {
    
    public static void main(String[] args) { 
        // 
        String sql = "SELECT first_name, last_name, email " +
                     "FROM candidates";
        
        try (Connection conn = MySQLJDBCUtil.getConnection();
             Statement stmt  = conn.createStatement();
             ResultSet rs    = stmt.executeQuery(sql)) {
           
            // loop through the result set
            while (rs.next()) {
                System.out.println(rs.getString("first_name") + "	" + 
                                   rs.getString("last_name")  + "	" +
                                   rs.getString("email"));
                    
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }
}

Kết quả như sau:

mysql jdbc query data jpg

Như vậy là mình đã hướng dẫn xong cách truy vấn Select MySQL bằng cách sử dụng Java JDBC Driver. Đây là kiến thức khá cơ bản và là tiền đề để bạn tự viết ra những thư viện tốt hơn.

0