首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

JSP 中 SQL 數據庫編程基礎:JDBC 核心接口與連接實戰

     編輯:關於JSP

JSP 直接操作數據庫雖不符合分層架構,但理解 JDBC 核心流程是掌握後端開發的基石。本文梳理 SQL 基礎、JDBC 四大核心接口、兩種驅動連接模式與資源管理要點。

SQL 基礎速查

類別語句範例
DDLCREATE TABLECREATE TABLE user(id INT PRIMARY KEY, name VARCHAR(20));
DMLSELECTSELECT id,name FROM user WHERE age > 18;
DMLINSERTINSERT INTO user(id,name) VALUES(1,'Tom');
DMLUPDATEUPDATE user SET age=20 WHERE id=1;
DMLDELETEDELETE FROM user WHERE id=1;

JDBC 四大核心接口

  1. DriverManager:載入驅動、獲取 Connection。
  2. Connection:會話上下文,管理事務(commit/rollback)、創建 Statement/PreparedStatement。
  3. Statement / PreparedStatement:執行靜態/參數化 SQL,executeQuery 返回 ResultSet,executeUpdate 返回影響行數。
  4. ResultSet:結果集游標,next() 逐行讀取,getXxx(column) 取值。

連接模式一:JDBC-ODBC 橋接(已廢棄)

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:myDSN", "user", "pwd");
  • 優點:無需額外驅動,可連 Access/Excel 等 ODBC 數據源。
  • 缺點:JDK 8 移除、效能差、平台相關、生產環境禁用。

連接模式二:原生 JDBC 驅動(標準)

// MySQL 範例
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection(
  "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC",
  "root", "password");
  • 驅動 Jar 放入 WEB-INF/lib 或容器共享 lib。
  • URL 格式:jdbc:subprotocol://host:port/db?params。

完整 CRUD 範例(PreparedStatement 防注入)

String sql = "INSERT INTO user(name,email) VALUES(?,?)";
try (Connection con = getConnection();
     PreparedStatement ps = con.prepareStatement(sql)) {
  ps.setString(1, "Alice");
  ps.setString(2, "alice@example.com");
  int rows = ps.executeUpdate();
  System.out.println("插入行數:" + rows);
}

資源管理鐵律

  • try-with-resources (JDK 7+):自動關閉 Connection/Statement/ResultSet,防洩漏。
  • 連接池:生產環境必須使用 HikariCP/Druid/Tomcat JDBC Pool,避免頻繁創建銷毀連接。
  • 事務邊界:業務方法層面控制 con.setAutoCommit(false),統一提交/回滾。

現代最佳實踐

JSP 中直寫 JDBC 已過時,建議採用 Spring JDBC Template / MyBatis / JPA 封裝數據訪問層,JSP/Controller 僅調用 Service,實現關注點分離。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved