程式碼編譯通過,運行報錯(如 ClassNotFoundException, SQLException, NullPointerException),不知從何下手。
Class.forName("com.mysql.jdbc.Driver")(或新驅動 com.mysql.cj.jdbc.Driver)DriverManager.getConnection(url, user, pass)statement.executeQuery(sql)url, user, pass 是否為預期值;conn 是否為 null。| 異常 | 檢查重點 |
|---|---|
| ClassNotFoundException | 驅動 JAR 是否在 Classpath / Maven 依賴 / WEB-INF/lib |
| SQLException: Communications link failure | IP、Port、防火牆、MySQL bind-address、skip-networking |
| SQLException: Access denied | 帳號/密碼、主機權限 (user@'%')、密碼插件 (caching_sha2_password) |
| NullPointerException | conn 未初始化即使用、ResultSet 未 next() 即 getXxx() |
public class TestMySQL {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";
String user = "root";
String pass = "123456";
try (Connection conn = DriverManager.getConnection(url, user, pass)) {
System.out.println("連線成功!");
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT VERSION()")) {
if (rs.next()) System.out.println("MySQL 版本: " + rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace(); // 完整堆疊最關鍵
}
}
}