Cách INSERT dữ liệu vào database MySQL bằng Java
Hướng dẫn cách sử dụng Prepared Statements trong Java để chèn dữ liệu vào 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 INSERT, từ đó thêm các bản ghi mới vào bảng trong cơ sở dữ liệu.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertDataExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/test_db";
String user = "root";
String password = "password";
String insertQuery = "INSERT INTO students (name, age, email) VALUES (?, ?, ?)";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(insertQuery)) {
// Set giá trị cho các tham số
pstmt.setString(1, "John Doe");
pstmt.setInt(2, 20);
pstmt.setString(3, "[email protected]");
// Thực hiện câu lệnh INSERT
int rowsAffected = pstmt.executeUpdate();
System.out.println(rowsAffected + " bản ghi đã được thêm vào.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Giải thích chi tiết từng dòng code:
import java.sql.Connection;
: Import lớpConnection
để thiết lập kết nối đến cơ sở dữ liệu.import java.sql.DriverManager;
: Import lớpDriverManager
để quản lý các kết nối đến cơ sở dữ liệu.import java.sql.PreparedStatement;
: Import lớpPreparedStatement
để thực hiện các câu lệnh SQL với tham số an toàn.String url = "jdbc:mysql://localhost:3306/test_db";
: Định nghĩa URL kết nối đến database MySQL.String user = "root";
vàString password = "password";
: Khai báo thông tin người dùng và mật khẩu để kết nối đến database.String insertQuery = "INSERT INTO students (name, age, email) VALUES (?, ?, ?)";
: Định nghĩa câu lệnh INSERT với các tham số.try (Connection conn = DriverManager.getConnection(url, user, password);
: Thiết lập kết nối đến database trong block try-with-resources.PreparedStatement pstmt = conn.prepareStatement(insertQuery)
: Tạo một PreparedStatement từ câu lệnh INSERT đã định nghĩa.pstmt.setString(1, "John Doe");
: Gán giá trị cho tham số thứ nhất trong câu lệnh INSERT.pstmt.setInt(2, 20);
: Gán giá trị cho tham số thứ hai trong câu lệnh INSERT.pstmt.setString(3, "[email protected]");
: Gán giá trị cho tham số thứ ba trong câu lệnh INSERT.int rowsAffected = pstmt.executeUpdate();
: Thực hiện câu lệnh INSERT và lưu số lượng bản ghi đã thêm vào biếnrowsAffected
.System.out.println(rowsAffected + " bản ghi đã được thêm vào.");
: In ra số lượng bản ghi đã thêm thành công.catch (Exception e) { e.printStackTrace(); }
: Bắt và xử lý ngoại lệ nếu có lỗi xảy ra trong quá trình thực hiện.
Yêu cầu hệ thống:
- JDK 8 trở lên
- Thư viện:
mysql-connector-java
Cách cài đặt các thư viện để chạy được đoạn mã Java trên:
- Tải thư viện
mysql-connector-java
từ trang chính thức của MySQL và thêm vào dự án Java của bạn. Nếu sử dụng Maven, bạn có thể thêm dependency sau vào filepom.xml
:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.32</version> </dependency>
Lời khuyên:
- Hãy đảm bảo rằng MySQL server của bạn đang chạy trước khi thực hiện kết nối.
- Kiểm tra kỹ các thông tin kết nối như
url
,user
, 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.