連線遠端 MySQL 資料庫僅需修改 JDBC URL 的主機與埠號。本文提供完整可運行範例,涵蓋驅動註冊、連線獲取、Statement 查詢、結果集遍歷與資源釋放的標準流程。
package com.test;
import java.sql.*;
public class JdbcTest {
public static void main(String[] args) throws SQLException {
// 1. 註冊驅動 (JDBC 4.0+ 可省略,Class.forName 亦可)
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// 2. 獲取連線 - 關鍵:IP:Port/Database
String url = "jdbc:mysql://10.27.104.176:3306/mydatabase";
Connection conn = DriverManager.getConnection(url, "root", "mysql");
// 3. 建立 Statement
Statement st = conn.createStatement();
// 4. 執行查詢
ResultSet rs = st.executeQuery("SELECT * FROM apparatus_info");
// 5. 處理結果集
while (rs.next()) {
System.out.println("欄位1: " + rs.getObject(1));
System.out.println("欄位2: " + rs.getObject(2));
}
// 6. 關閉資源 (逆序:ResultSet → Statement → Connection)
rs.close();
st.close();
conn.close();
}
}
| 步驟 | 關鍵說明 |
|---|---|
| URL 格式 | jdbc:mysql://(建議加參數避免時區/SSL 警告) |
| 驅動類 | MySQL 8.0+ 為 com.mysql.cj.jdbc.Driver,舊版 com.mysql.jdbc.Driver |
| 防注入 | 實務務必使用 PreparedStatement 替代 Statement |
| 資源關閉 | JDK 7+ 建議使用 try-with-resources 自動關閉 |
public static void main(String[] args) {
String url = "jdbc:mysql://10.27.104.176:3306/mydatabase?useSSL=false&serverTimezone=UTC";
String sql = "SELECT * FROM apparatus_info";
try (Connection conn = DriverManager.getConnection(url, "root", "mysql");
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
System.out.println(rs.getObject(1) + " | " + rs.getObject(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
頻繁建立/關閉連線開銷極大,必須引入 HikariCP、Druid 或 DBCP2。以 HikariCP 為例:
HikariConfig config = new HikariConfig();
config.setJdbcUrl(url);
config.setUsername("root");
config.setPassword("mysql");
config.setMaximumPoolSize(20);
DataSource ds = new HikariDataSource(config);
// 使用時
try (Connection conn = ds.getConnection()) { ... }
掌握 JDBC 基礎流程,是理解上層 ORM 框架(MyBatis、JPA/Hibernate)運作機制的前提。