mysql-connector-java-.jar (Platform Independent)<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>lib/ 目錄 → 放入 jar → 右鍵 Build Path → Add to Build PathWebRoot/WEB-INF/lib/(自動生效)pom.xml 依賴即可,無需手動放 jarClass.forName("com.mysql.cj.jdbc.Driver")(8.0+)或 com.mysql.jdbc.Driver(5.x)DriverManager.getConnection(url, user, pass)conn.createStatement() 或 conn.prepareStatement(sql)executeQuery() / executeUpdate()ResultSet.next() + getXxx()rs.close() → stmt.close() → conn.close()(逆序,建議 try-with-resources)jdbc:mysql://127.0.0.1:3306/mydb? useUnicode=true& characterEncoding=UTF-8& serverTimezone=Asia/Shanghai& useSSL=false& allowPublicKeyRetrieval=true& autoReconnect=true& failOverReadOnly=false
serverTimezone:8.0+ 必填,避免時區異常useSSL=false:開發環境關閉 SSL 降低握手延遲allowPublicKeyRetrieval=true:配合 caching_sha2_password 允許獲取公鑰package com.example.db;
import java.sql.*;
public class MySQLTest {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false";
String user = "root";
String pass = "123456";
String sql = "SELECT id, name, description FROM _test";
try (Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
Class.forName("com.mysql.cj.jdbc.Driver"); // 8.0+ 可省略(SPI 自動載入)
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String desc = rs.getString("description");
System.out.printf("%d %s %s%n", id, name, desc);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
System.out.println("連線失敗:" + e.getMessage());
}
}
}
String sql = "SELECT * FROM users WHERE email = ? AND status = ?";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, "test@example.com");
ps.setInt(2, 1);
try (ResultSet rs = ps.executeQuery()) {
// ...
}
}
| 錯誤 | 原因 | 解決 |
|---|---|---|
| ClassNotFoundException | 驅動 jar 未在 classpath | 檢查 Build Path / WEB-INF/lib / Maven 依賴 |
| Communications link failure | IP/埠/防火牆/服務未啟動 | telnet 測試 3306、檢查 bind-address |
| Public Key Retrieval is not allowed | 8.0+ caching_sha2_password | URL 加 allowPublicKeyRetrieval=true 或改用 mysql_native_password |
| Zero date value prohibited | 資料含 0000-00-00 | URL 加 zeroDateTimeBehavior=CONVERT_TO_NULL |
掌握標準流程 + 關鍵 URL 參數,MyEclipse 連 MySQL 零障礙。