使用 JDBC 操作資料庫時,新手常犯一個經典錯誤:對 INSERT、UPDATE、DELETE 等資料異動語句呼叫 executeQuery() 而非 executeUpdate()。
String sql = "INSERT INTO student VALUES ('95005', '張三', '男', 50, 'DC')";
stmt.executeQuery(sql); // 錯誤!拋出 SQLException
stmt.executeUpdate(sql); // 正確:返回影響行數
// 或
stmt.execute(sql); // 通用執行,需自行判斷結果類型
| 方法 | 適用場景 | 返回值 |
|---|---|---|
executeQuery() | SELECT 查詢 | ResultSet |
executeUpdate() | INSERT/UPDATE/DELETE、DDL | 影響行數 (int) |
execute() | 任意 SQL,含多結果集 | boolean (是否為 ResultSet) |
PreparedStatement 可防 SQL 注入並提升效能。Connection, Statement, ResultSet) 需在 finally 區塊或 try-with-resources 中關閉。mch0dmin 有安全風險,生產環境請使用連線池與配置檔管理。記住:查詢用 Query,異動用 Update,一字之差,功能天差地別。