網路上關於 JSP 連接 DB2 的資料多有錯誤,本文提供經測試可行的完整範例,環境:AIX 4.3 + DB2 7.2 + JDK 1.3 + Tomcat 4.1.6。
DB2 與 Oracle 類似,建議顯式建立驅動實例並向 DriverManager 註冊,而非使用 Class.forName():
DriverManager.registerDriver(new COM.ibm.db2.jdbc.app.DB2Driver());
<%@ page session="false" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<html>
<head></head>
<body>
<%
String url = "jdbc:db2:ch"; // jdbc:子協定:子名稱,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();
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>
finally 區塊確保連線關閉ResultSet、Statement、Connectionnull 協助 GC 回收