Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách chọn/chuyển database trong MySQL qua JDBC API?

Chuyển đổi database (schema) trong MySQL sử dụng JDBC

Có 2 cách chính: thực thi câu lệnh USE database hoặc chỉ định database trong connection URL.

Cách 1: Thực thi USE statement qua JDBC

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

public class ChangeDatabaseExample {
    public static void main(String[] args) throws SQLException {
        // 1. Register driver
        DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
        
        // 2. Kết nối không chỉ định database
        String mysqlUrl = "jdbc:mysql://localhost/";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established......");
        
        // 3. Tạo Statement
        Statement stmt = con.createStatement();
        
        // 4. Thực thi USE database
        String query = "USE mydatabase";
        stmt.execute(query);
        System.out.println("Database changed......");
    }
}

Cách 2: Chỉ định database trong URL (Khuyên dùng)

// Chỉ định database ngay khi kết nối
String url = "jdbc:mysql://localhost/mydatabase";
Connection con = DriverManager.getConnection(url, "root", "password");

So sánh 2 cách

Tiêu chíUSE statementURL parameter
Độ phức tạpCần Statement, execute()Chuỗi kết nối đơn giản
Hiệu năng1 round-trip thêmTối ưu, 1 kết nối
Linh hoạtĐổi DB runtimeCố định khi connect
Connection PoolKhó quản lýDễ dàng (mỗi pool 1 DB)

Lưu ý quan trọng

  • Driver class: com.mysql.cj.jdbc.Driver (MySQL 8.0+), cũ: com.mysql.jdbc.Driver
  • URL format: jdbc:mysql://host:port/database?properties
  • Properties hữu ích: useSSL=false, serverTimezone=UTC, allowPublicKeyRetrieval=true
  • Luôn đóng Connection, Statement trong finally block hoặc try-with-resources

Best Practice

try (Connection con = DriverManager.getConnection(
        "jdbc:mysql://localhost/mydb?useSSL=false&serverTimezone=UTC", 
        "user", "pass")) {
    // Sử dụng connection
} // Tự động đóng