Cách SELECT dữ liệu từ database MySQL bằng Java
Hướng dẫn cách sử dụng Prepared Statements trong Java để truy vấn dữ liệu từ một bảng trong database MySQL một cách an toàn và hiệu quả.
Trong bài viết này, bạn sẽ học cách kết nối đến một database MySQL và sử dụng Java với Prepared Statements để thực hiện câu lệnh SELECT, từ đó lấy dữ liệu từ bảng trong cơ sở dữ liệu theo nhiều tham số.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class SelectData {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test_db";
String user = "root";
String password = "password";
String selectQuery = "SELECT * FROM students WHERE id = ? AND name = ?";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(selectQuery)) {
// Thiết lập các tham số cho Prepared Statement
pstmt.setInt(1, 1);
pstmt.setString(2, "John Doe");
// Thực hiện truy vấn
ResultSet rs = pstmt.executeQuery();
// Xử lý kết quả truy vấn
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Giải thích chi tiết từng dòng code:
import java.sql.*;
: Nhập các lớp cần thiết để làm việc với cơ sở dữ liệu.String url = "jdbc:mysql://localhost:3306/test_db";
: Đường dẫn kết nối đến database MySQL.String user = "root";
: Tên người dùng để kết nối.String password = "password";
: Mật khẩu của người dùng.String selectQuery = "SELECT * FROM students WHERE id = ? AND name = ?";
: Định nghĩa câu lệnh SELECT với các tham số.try (Connection conn = DriverManager.getConnection(url, user, password); PreparedStatement pstmt = conn.prepareStatement(selectQuery))
: Tạo kết nối và Prepared Statement trong một block try-with-resources để tự động đóng tài nguyên.pstmt.setInt(1, 1);
: Thiết lập tham số đầu tiên (ID) cho Prepared Statement.pstmt.setString(2, "John Doe");
: Thiết lập tham số thứ hai (Name) cho Prepared Statement.ResultSet rs = pstmt.executeQuery();
: Thực hiện truy vấn và lưu kết quả vào một ResultSet.while (rs.next()) {...}
: Duyệt qua các bản ghi trong ResultSet và in thông tin ra màn hình.e.printStackTrace();
: In ra thông báo lỗi nếu có ngoại lệ xảy ra.
Yêu cầu hệ thống:
- Java 8 hoặc cao hơn
- Thư viện MySQL Connector/J
Cách cài đặt các thư viện để chạy được đoạn mã Java trên:
- Tải MySQL Connector/J từ trang chủ MySQL Connector/J và thêm vào classpath của dự án.
Lời khuyên:
- Hãy đảm bảo rằng MySQL server của bạn đang chạy và cấu hình đúng.
- Kiểm tra kỹ các thông tin kết nối như URL, username, và password để tránh lỗi kết nối.
- Sử dụng Prepared Statements để bảo vệ khỏi các cuộc tấn công SQL injection.