| 步驟 | 核心類/接口 | 關鍵方法 | 說明 |
|---|---|---|---|
| 1. 加載驅動 | Class | forName("com.mysql.cj.jdbc.Driver") | JDBC 4.0+ 可省略(SPI 自動發現) |
| 2. 獲取連接 | DriverManager | getConnection(url, user, pwd) | 返回 Connection,建議使用連接池 |
| 3. 創建語句 | Connection | createStatement() / prepareStatement(sql) | 返回 Statement / PreparedStatement |
| 4. 執行查詢 | Statement / PreparedStatement | executeQuery(sql) | 返回 ResultSet(僅 SELECT) |
| 5. 遍歷結果集 | ResultSet | next(), getString(col), getInt(col)... | 游標逐行讀取,列索引從 1 開始 |
| 6. 釋放資源 | ResultSet, Statement, Connection | close() | 逆序關閉,建議 try-with-resources |
String sql = "SELECT id, name, age FROM user WHERE status = ?";
try (Connection conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, 1);
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
User u = new User();
u.setId(rs.getLong("id"));
u.setName(rs.getString("name"));
u.setAge(rs.getInt("age"));
list.add(u);
}
}
}
executeUpdate 用於 INSERT/UPDATE/DELETE,**不適用於 SELECT**(返回影響行數,非 ResultSet)。PreparedStatement 拼接 SQL 導致注入風險與性能損耗。ResultSet 導致游標洩漏,耗盡數據庫連接。生產環境**必須**使用 HikariCP / Druid / DBCP2 管理連接生命周期,配置 maximumPoolSize、idleTimeout、maxLifetime 等參數,避免頻繁建連開銷。
掌握 JDBC 七步曲,是 Java 後端操作關係型數據庫的基石。