PostgreSQL - Giao diện JAVA: Hướng dẫn cho người mới bắt đầu

Xin chào các pháp sư cơ sở dữ liệu tương lai! Tôi rất vui mừng được làm hướng dẫn viên của bạn trong hành trình thú vị vào thế giới của PostgreSQL và Java. Là một người đã dạy khoa học máy tính trong nhiều năm, tôi không thể chờ đợi để chia sẻ kiến thức và kinh nghiệm của mình với các bạn. Hãy cùng bắt đầu!

PostgreSQL - Java

Cài đặt

Trước khi bắt đầu lập mã, chúng ta cần thiết lập môi trường của mình. Đừng lo lắng; nó dễ dàng hơn việc ráp ghép nội thất IKEA!

  1. Cài đặt PostgreSQL: Tải xuống và cài đặt PostgreSQL từ trang web chính thức.
  2. Cài đặt Java Development Kit (JDK): Tải xuống phiên bản mới nhất từ trang web của Oracle.
  3. Tải xuống Trình điều khiển JDBC: Chúng ta cần này để kết nối Java với PostgreSQL. Bạn có thể tìm thấy nó trên trang web của PostgreSQL.

Khi bạn đã cài đặt xong những thứ này, bạn đã sẵn sàng bắt đầu cuộc phiêu lưu cơ sở dữ liệu của mình!

Kết nối đến cơ sở dữ liệu

Bây giờ, hãy viết đoạn mã đầu tiên để kết nối đến một cơ sở dữ liệu PostgreSQL. Nó giống như đang gọi điện thoại cho cơ sở dữ liệu của bạn!

import java.sql.Connection;
import java.sql.DriverManager;

public class DatabaseConnection {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try {
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("Kết nối thành công đến máy chủ PostgreSQL.");
} catch (Exception e) {
e.printStackTrace();
}
}
}

Hãy phân tích này:

  • Chúng ta导入 cần thiết các lớp Java SQL.
  • Chúng ta xác định URL cơ sở dữ liệu, tên người dùng và mật khẩu.
  • Chúng ta sử dụng DriverManager.getConnection() để thiết lập kết nối.
  • Nếu thành công, chúng ta in tin nhắn thành công; ngược lại, chúng ta bắt và in bất kỳ lỗi nào.

Tạo bảng

Tuyệt vời! Chúng ta đã kết nối. Bây giờ, hãy tạo một bảng. Hãy tưởng tượng nó như việc thiết lập một bảng tính mới.

import java.sql.*;

public class CreateTable {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement()) {

String sql = "CREATE TABLE students " +
"(id SERIAL PRIMARY KEY, " +
" name VARCHAR(50), " +
" age INTEGER, " +
" grade CHAR(1))";

stmt.executeUpdate(sql);
System.out.println("Bảng đã được tạo thành công!");

} catch (SQLException e) {
e.printStackTrace();
}
}
}

Đây là những gì đang xảy ra:

  • Chúng ta tạo một đối tượng Statement để thực thi các lệnh SQL.
  • Chúng ta xác định lệnh SQL để tạo bảng 'students'.
  • Chúng ta sử dụng executeUpdate() để chạy lệnh SQL.

Thao tác INSERT

Bây giờ chúng ta có một bảng, hãy thêm một số dữ liệu vào. Nó giống như điền thông tin vào bảng tính mới của bạn!

import java.sql.*;

public class InsertData {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO students(name, age, grade) VALUES(?, ?, ?)")) {

pstmt.setString(1, "Alice");
pstmt.setInt(2, 20);
pstmt.setString(3, "A");
pstmt.executeUpdate();

System.out.println("Dữ liệu đã được chèn thành công!");

} catch (SQLException e) {
e.printStackTrace();
}
}
}

Đây là phân tích:

  • Chúng ta sử dụng PreparedStatement để có tính an toàn và hiệu suất tốt hơn.
  • Chúng ta đặt giá trị bằng cách sử dụng setString()setInt() các phương thức.
  • Chúng ta thực thi chèn bằng cách sử dụng executeUpdate().

Thao tác SELECT

Đã đến lúc lấy dữ liệu của chúng ta! Nó giống như yêu cầu bảng tính của bạn hiển thị những gì bạn đã nhập.

import java.sql.*;

public class SelectData {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM students")) {

while (rs.next()) {
System.out.println("ID: " + rs.getInt("id"));
System.out.println("Tên: " + rs.getString("name"));
System.out.println("Tuổi: " + rs.getInt("age"));
System.out.println("Điểm: " + rs.getString("grade"));
}

} catch (SQLException e) {
e.printStackTrace();
}
}
}

Đây là những gì đang xảy ra:

  • Chúng ta sử dụng executeQuery() để chạy một lệnh SELECT.
  • Chúng ta nhận được một ResultSet chứa kết quả truy vấn của chúng ta.
  • Chúng ta sử dụng một vòng lặp while với rs.next() để duyệt qua các kết quả.
  • Chúng ta lấy dữ liệu bằng cách sử dụng các phương thức như getInt()getString().

Thao tác UPDATE

Đôi khi chúng ta cần thay đổi dữ liệu của mình. Nó giống như chỉnh sửa một ô trong bảng tính của bạn.

import java.sql.*;

public class UpdateData {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(
"UPDATE students SET grade = ? WHERE name = ?")) {

pstmt.setString(1, "B");
pstmt.setString(2, "Alice");
int rowsUpdated = pstmt.executeUpdate();

System.out.println(rowsUpdated + " hàng đã được cập nhật!");

} catch (SQLException e) {
e.printStackTrace();
}
}
}

Đây là những gì đang xảy ra:

  • Chúng ta chuẩn bị một lệnh UPDATE với các placeholder.
  • Chúng ta đặt điểm mới và tên học sinh cần cập nhật.
  • Chúng ta thực thi cập nhật và nhận được số lượng hàng bị ảnh hưởng.

Thao tác DELETE

Cuối cùng, hãy học cách xóa dữ liệu. Nó giống như xóa một hàng trong bảng tính của bạn.

import java.sql.*;

public class DeleteData {
public static void main(String[] args) {
String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "username";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(
"DELETE FROM students WHERE name = ?")) {

pstmt.setString(1, "Alice");
int rowsDeleted = pstmt.executeUpdate();

System.out.println(rowsDeleted + " hàng đã bị xóa!");

} catch (SQLException e) {
e.printStackTrace();
}
}
}

Đây là phân tích:

  • Chúng ta chuẩn bị một lệnh DELETE với một placeholder cho tên.
  • Chúng ta đặt tên của học sinh cần xóa.
  • Chúng ta thực thi xóa và nhận được số lượng hàng bị ảnh hưởng.

Các phương thức cơ sở dữ liệu phổ biến

Dưới đây là bảng các phương thức phổ biến chúng ta đã sử dụng trong các ví dụ của mình:

Phương thức Mô tả
DriverManager.getConnection() Thiết lập kết nối đến cơ sở dữ liệu
Connection.createStatement() Tạo một đối tượng Statement để thực thi SQL
Connection.prepareStatement() Tạo một PreparedStatement cho SQL có tham số
Statement.executeUpdate() Thực thi một lệnh SQL thay đổi dữ liệu
Statement.executeQuery() Thực thi một truy vấn SQL và trả về một ResultSet
ResultSet.next() Di chuyển con trỏ đến hàng tiếp theo trong ResultSet
ResultSet.getXXX() (ví dụ: getString, getInt) Lấy giá trị cột từ hàng hiện tại

Và thế là bạn đã迈出了第一步 vào thế giới của PostgreSQL và Java. Nhớ rằng, thực hành làm nên hoàn hảo, vì vậy hãy tiếp tục thử nghiệm với các khái niệm này. Trước khi bạn biết, bạn sẽ trở thành một chuyên gia trong việc xây dựng các ứng dụng cơ sở dữ liệu phức tạp!

Credits: Image by storyset