JDBC (Java Database Connectivity) 提供統一 API 存取關聯式資料庫。本文以 MySQL 為例,涵蓋驅動載入、連線建立、Statement/PreparedStatement 操作、結果集處理與事務管理。
mysql-connector-java)
mysql-connector-java-5.1.x-bin.jarD:/javasoft/mysql-connector-java-5.1.5-bin.jar<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
Class.forName("com.mysql.jdbc.Driver") (5.1+) 或 com.mysql.cj.jdbc.Driver (8.0+)DriverManager.getConnection(url, user, pass)conn.createStatement()executeQuery() 查詢 / executeUpdate() 增刪改ResultSet.next() 迭代 + getString()/getInt()String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM user");
while (rs.next()) {
System.out.println(rs.getString("username"));
System.out.println(rs.getInt("password"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch (SQLException ignore) {}
if (stmt != null) try { stmt.close(); } catch (SQLException ignore) {}
if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
}

int 影響行數stmt.executeUpdate("INSERT INTO user VALUES (1, 'Tom', '123')")conn.setAutoCommit(false); // 關閉自動提交
try {
stmt.executeUpdate("UPDATE account SET money=money-100 WHERE id=1");
stmt.executeUpdate("UPDATE account SET money=money+100 WHERE id=2");
conn.commit(); // 全部成功提交
} catch (SQLException e) {
conn.rollback(); // 任一失敗回滾
e.printStackTrace();
} finally {
conn.setAutoCommit(true);
}
經典場景:轉帳 — 要麼全成功,要麼全失敗,保證資料一致性。
HikariCP, Druid) 管理連線生命週期