Trong thế giới lập trình, việc kết nối và làm việc với cơ sở dữ liệu là một công việc quan trọng và không thể thiếu. Trong Java, JDBC (Java Database Connectivity) là một API mạnh mẽ được sử dụng rộng rãi để làm việc với cơ sở dữ liệu. Bài viết này sẽ hướng dẫn bạn cách sử dụng JDBC từ việc thiết lập kết nối, truy vấn dữ liệu, cho đến cập nhật dữ liệu.
1. Chuẩn bị môi trường
Trước khi bắt đầu, bạn cần chuẩn bị một cơ sở dữ liệu và trình điều khiển JDBC phù hợp. Ví dụ, nếu bạn sử dụng MySQL, bạn sẽ cần thư viện MySQL Connector/J. Bạn có thể tải thư viện này từ trang web của MySQL và thêm vào thư mục classpath
của dự án.
2. Thiết lập kết nối
Để thiết lập kết nối với cơ sở dữ liệu, bạn cần tải driver JDBC và sử dụng lớp DriverManager
để tạo kết nối. Đoạn mã dưới đây minh họa cách thực hiện:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnector {
public static Connection getConnection() {
Connection connection = null;
try {
// Đăng ký driver JDBC
Class.forName("com.mysql.cj.jdbc.Driver");
// Thiết lập kết nối
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "username";
String password = "password";
connection = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return connection;
}
}
3. Thực hiện truy vấn dữ liệu
Sau khi đã kết nối thành công, bạn có thể thực hiện các truy vấn để lấy dữ liệu từ cơ sở dữ liệu. Sử dụng Statement
hoặc PreparedStatement
là các tùy chọn phổ biến. Ví dụ dưới đây sẽ minh họa việc sử dụng PreparedStatement
để truy vấn dữ liệu an toàn hơn:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class QueryExecutor {
public void executeQuery() {
Connection connection = DatabaseConnector.getConnection();
String sql = "SELECT * FROM users WHERE id = ?";
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 1); // Set giá trị cho tham số đầu tiên
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
System.out.println("User ID: " + resultSet.getInt("id"));
System.out.println("User Name: " + resultSet.getString("name"));
}
resultSet.close();
preparedStatement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
4. Cập nhật dữ liệu
Ngoài việc truy vấn dữ liệu, bạn còn có thể cập nhật dữ liệu trong cơ sở dữ liệu. Đoạn mã dưới đây sẽ minh họa cách thực hiện một thao tác cập nhật:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DataUpdater {
public void updateData() {
Connection connection = DatabaseConnector.getConnection();
String sql = "UPDATE users SET name = ? WHERE id = ?";
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "New Name");
preparedStatement.setInt(2, 1); // Cập nhật người dùng có id = 1
int rowsAffected = preparedStatement.executeUpdate();
System.out.println("Rows affected: " + rowsAffected);
preparedStatement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
5. Đóng kết nối
Cuối cùng, việc đóng kết nối và tài nguyên là rất quan trọng để tránh rò rỉ kết nối và tài nguyên. Như trong các ví dụ trên, việc gọi close()
trên ResultSet
, PreparedStatement
, và Connection
được thực hiện để đảm bảo tài nguyên được giải phóng.
Kết luận
Làm việc với cơ sở dữ liệu bằng JDBC trong Java là một kỹ năng cơ bản nhưng cực kỳ quan trọng đối với các lập trình viên Java. Từ việc thiết lập kết nối, thực hiện truy vấn, cập nhật dữ liệu, cho đến quản lý tài nguyên, mỗi bước trong quá trình này đều đòi hỏi sự cẩn thận và chính xác. Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về cách làm việc với cơ sở dữ liệu sử dụng JDBC.
Comments