一、準備工作
-
??安裝MySQL數據庫??
確保已安裝MySQL服務器并啟動服務 -
??下載JDBC驅動??
- 官方驅動:MySQL Connector/J
- Maven依賴:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency>
二、基礎連接步驟?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class MySQLDemo {// 數據庫信息static final String URL = "jdbc:mysql://localhost:3306/mydatabase";static final String USER = "root";static final String PASSWORD = "123456";public static void main(String[] args) {Connection conn = null;try {// 1. 加載驅動(JDBC 4.0+ 可自動加載)Class.forName("com.mysql.cj.jdbc.Driver");// 2. 建立連接conn = DriverManager.getConnection(URL, USER, PASSWORD);// 3. 使用連接進行數據庫操作System.out.println("連接成功!");} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();} finally {// 4. 關閉連接try {if(conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}
三、關鍵參數說明
-
??連接URL格式??
jdbc:mysql://[host][:port]/[database][?參數]
- 常用參數:
useSSL=false
?禁用SSL(開發環境建議)serverTimezone=UTC
?設置時區characterEncoding=utf8
?字符編碼
- 常用參數:
-
??推薦完整URL?
String URL = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8";
?
四、執行SQL操作
1. 查詢數據示例
Statement stmt = null;
ResultSet rs = null;
try {stmt = conn.createStatement();rs = stmt.executeQuery("SELECT id, name FROM users");while(rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");System.out.println(id + ": " + name);}
} finally {if(rs != null) rs.close();if(stmt != null) stmt.close();
}
2. 使用PreparedStatement(推薦)
String sql = "INSERT INTO users(name, age) VALUES(?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, "張三");pstmt.setInt(2, 25);int rows = pstmt.executeUpdate();System.out.println("插入" + rows + "條記錄");
}
五、事務管理
try {conn.setAutoCommit(false); // 關閉自動提交// 執行多個SQL操作...conn.commit(); // 提交事務
} catch (SQLException e) {try {conn.rollback(); // 回滾事務} catch (SQLException ex) {ex.printStackTrace();}e.printStackTrace();
} finally {conn.setAutoCommit(true); // 恢復自動提交
}
六、常見問題排查
-
??驅動加載失敗??
- 確認jar包已正確添加到classpath
- 檢查驅動類名是否正確(新版使用
com.mysql.cj.jdbc.Driver
)
-
??連接超時??
- 檢查MySQL服務是否運行
- 驗證用戶名/密碼是否正確
- 檢查防火墻設置
-
??時區問題??
// 在連接URL中添加時區參數 ?serverTimezone=Asia/Shanghai
七、連接池推薦
對于生產環境,建議使用連接池:
- HikariCP(性能最佳)
- Druid(阿里出品,帶監控功能)
HikariCP簡單示例:
HikariConfig config = new HikariConfig();
config.setJdbcUrl(URL);
config.setUsername(USER);
config.setPassword(PASSWORD);try (HikariDataSource ds = new HikariDataSource(config);Connection conn = ds.getConnection()) {// 使用連接...
}