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

JSP連接DB2數據庫:關鍵驅動註冊姿勢與完整實戰代碼

     編輯:關於JSP

網絡上關於JSP連DB2的資料良莠不齊,許多示例忽略關鍵驅動註冊步驟導致連接失敗。本文基於AIX 4.3 + DB2 7.2 + JDK 1.3 + Tomcat 4.1.6實測環境,提供經驗證可用的完整連接方案。

核心差異:顯式驅動實例化註冊

Oracle/DB2等企業級數據庫不建議使用Class.forName()單純加載驅動類,而應顯式創建驅動實例並註冊到DriverManager:

DriverManager.registerDriver(new COM.ibm.db2.jdbc.app.DB2Driver());
// 而非 Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");

這確保驅動正確初始化並註冊,避免「No suitable driver」錯誤。

完整JSP頁面代碼

<%@ page session="false" %>
<%@ page import="java.sql.*, java.util.*" %>
<html><head></head><body>
<%
    String url = "jdbc:db2:ch";           // jdbc:子協議:數據庫別名
    String user = "db2inst1";
    String password = "db2inst1";

    // 關鍵:顯式註冊驅動實例
    DriverManager.registerDriver(new COM.ibm.db2.jdbc.app.DB2Driver());

    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. 驅動包:db2java.zip(或db2jcc.jar新版驅動)需在WEB-INF/lib或容器共享類加載路徑。
  2. URL格式:jdbc:db2:<數據庫別名>,別名需在DB2客戶端目錄中編目。
  3. 資源釋放:finally塊確保連接關閉,防洩漏。
  4. session="false":純數據展示頁無需Session,關閉減輕開銷。

現代化遷移建議

  • 驅動升級至com.ibm.db2.jcc.DB2Driver(JCC通用驅動),支持JDBC 4.0+自動註冊(META-INF/services/java.sql.Driver),無需顯式註冊代碼。
  • 採用連接池(HikariCP、DBCP2)替代直連,配置dataSource在context.xml或Spring中管理。
  • 業務邏輯剝離至Service層,JSP僅負責渲染,避免Scriptlet混雜SQL。

「顯式驅動註冊」是連接DB2/Informix等老牌數據庫的黃金法則,切記切記。

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