JDBC 標準七步驟
- 加載驅動:
Class.forName("com.mysql.jdbc.Driver"),註冊到 DriverManager。
- 準備 URL:
jdbc:mysql://host:port/db?useUnicode=true&characterEncoding=UTF-8。
- 建立連接:
DriverManager.getConnection(url, user, pwd) 返回 Connection。
- 創建 Statement:
Statement:靜態 SQL。
PreparedStatement:參數化 SQL(防注入、預編譯優化)。
CallableStatement:存儲過程。
- 執行 SQL:
executeQuery():查詢 → ResultSet。
executeUpdate():增刪改 / DDL → 影響行數。
execute():複雜語句(多結果集)。
- 處理結果:
ResultSet.next() 遍歷,getXxx(columnIndex/Name) 取值。
- 關閉資源:
ResultSet → Statement → Connection(反順序),釋放數據庫資源。
通用工具類:DBHelper
public class DBHelper {
public static final String URL = "jdbc:mysql://localhost:3306/mybatis";
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String USER = "root";
public static final String PWD = "123456";
public Connection conn = null;
public PreparedStatement ps = null;
public DBHelper(String sql) {
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USER, PWD);
ps = conn.prepareStatement(sql);
} catch (Exception e) { e.printStackTrace(); }
}
public void close() {
try {
if (ps != null) ps.close();
if (conn != null) conn.close();
} catch (Exception e) { e.printStackTrace(); }
}
}
測試代碼
public class JdbcTest {
public static void main(String[] args) {
String sql = "SELECT * FROM user";
DBHelper helper = new DBHelper(sql);
try (ResultSet rs = helper.ps.executeQuery()) {
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
int age = rs.getInt(3);
System.out.println("id=" + id + ", name=" + name + ", age=" + age);
}
} catch (Exception e) { e.printStackTrace(); }
finally { helper.close(); }
}
}
進階優化建議