Oracle/DB2 推薦 DriverManager.registerDriver(new COM.ibm.db2.jdbc.app.DB2Driver()),而非 Class.forName(),確保驅動正確載入並支援 Type 2 本地連線。
<%@ page session="false" import="java.sql.*,java.util.*" %>
<html><body>
<%
String url = "jdbc:db2:ch"; // ch 為資料庫別名
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();
ResultSet rs = stmt.executeQuery("SELECT * FROM TASK");
%>
<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>
<% } %>
</table>
<%
} catch (Exception e) {
out.println("Error: " + e.getMessage());
} finally {
if (conn != null) try { conn.close(); } catch (Exception ignore) {}
}
%>
</body></html>
finally 區塊,防洩漏| 錯誤 | 原因 | 解決 |
|---|---|---|
ClassNotFoundException | db2java.zip/jcc.jar 未在 CLASSPATH | 放入 $CATALINA_HOME/lib 或 webapp WEB-INF/lib |
SQL1042C | DB2 實例未啟動或通訊埠錯誤 | db2start、檢查 SVCENAME/DB2COMM |
| 中文亂碼 | JVM/DB/連線碼頁不一致 | 設定 DB2CODEPAGE=1208 (UTF-8) 或一致碼頁 |