首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

JSP 連線 DB2 資料庫完整範例與關鍵設定詳解

     編輯:DB2 教學

核心連線程式碼

<%@ page session="false" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<html><head></head><body>
<%
    String url = "jdbc:db2:ch";           // jdbc:子協定:資料庫別名
    String user = "db2inst1";
    String passWord = "db2inst1";

    // 關鍵:顯式註冊 DB2 Type 2 驅動程式
    DriverManager.registerDriver(new COM.ibm.db2.jdbc.app.DB2Driver());
    // Oracle 同理需顯式建立驅動實例;其他資料庫常用 Class.forName()

    Connection conn = null;
    try {
        conn = DriverManager.getConnection(url, user, passWord);
        Statement stmt = conn.createStatement();
        String sql = "select * from task";
        ResultSet rs = stmt.executeQuery(sql);
%>
<table border="1" cellspacing="1" cellpadding="0">
<%
        while (rs.next()) {
%>
<tr>
    <td><%=rs.getString(1)%></td>
    <td><%=rs.getString(2)%></td>
    <td><%=rs.getString(3)%></td>
    <td><%=rs.getString(4)%></td>
    <td><%=rs.getString(5)%></td>
    <td><%=rs.getString(6)%></td>
</tr>
<%
        }
        rs.close(); rs = null;
        stmt.close(); stmt = null;
    } finally {
        if (conn != null) { conn.close(); }
    }
%>
</table></body></html>

關鍵點解析

  1. 驅動程式註冊:DB2 Type 2 驅動 (COM.ibm.db2.jdbc.app.DB2Driver) 必須顯式 new 並 registerDriver,不可用 Class.forName。這與 Oracle Type 2 驅動類似。
  2. 連線 URL 格式:jdbc:db2:<資料庫別名>,別名需在 DB2 客戶端目錄中編目。
  3. 資源釋放:finally 區塊確保 Connection/Statement/ResultSet 依序關閉,防止洩漏。
  4. 部署環境驗證:範例於 AIX 4.3 + DB2 7.2 + JDK 1.3 + Tomcat 4.1.6** 通過測試。

常見問題排查

  • ClassNotFoundException:確認 db2java.zip (或 db2jcc.jar) 在 CLASSPATH/Web-INF/lib。
  • 連線失敗:檢查 DB2 實例是否啟動、資料庫別名是否編目、防火牆/權限設定。
  • 中文亂碼:確認 JSP pageEncoding、資料庫代碼頁、JDBC 驅動版本相容性。

進階建議

  • 生產環境請使用 連線池 (Tomcat DBCP、HikariCP、WebSphere DataSource) 而非逐請求建立連線。
  • 採用 PreparedStatement 防止 SQL 注入並利用語句快取。
  • Type 4 通用驅動 (com.ibm.db2.jcc.DB2Driver) 免客戶端安裝,跨平台部署更彈性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved