資料庫連線是動態網站的核心,而在 Java 生態系中,JDBC (Java Database Connectivity) 是連接資料庫的標準技術。大多數資料庫系統皆提供 JDBC 驅動程式,讓 Java 程式能透過驅動程式執行查詢、擷取資料等操作。此外,Sun 公司還開發了 JDBC-ODBC Bridge,使 Java 程式得以存取具備 ODBC 驅動的資料庫(如 Oracle、Sybase、MS SQL Server、MS Access 等)。本文將示範如何利用 Access 資料庫建立一個動態的 FAQ(常見問題與解答)網站。
首先建立一個名為 faq.mdb 的 Access 資料庫,並在其中設計一張名為 faqs 的資料表,欄位定義如下:
這張表將用於儲存程式設計相關的常見問題與解答。
開啟控制台的「ODBC 資料來源」模組,新增一個「系統 DSN」,名稱設為 faq,並指向剛建立的 faq.mdb。
建立一個 JavaBean faq.java,存放於 \JSwdk-1.0.1\webpages\WEB-INF\JSP\beans\test 目錄下。程式碼如下:
package test;
import java.sql.*;
public class faq {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:faq";
Connection conn = null;
ResultSet rs = null;
public faq() {
try {
Class.forName(sDBDriver);
} catch (ClassNotFoundException e) {
System.err.println("faq(): " + e.getMessage());
}
}
public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(sConnStr);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println("faq.executeQuery: " + ex.getMessage());
}
return rs;
}
}
使用上一節的方法編譯 faq.java 後,在 \jswdk-1.0.1\webpages\test 目錄下建立 faq.jsp,內容如下:
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="workM" class="test.faq" scope="page"></jsp:useBean>
<%
ResultSet RS = workM.executeQuery("SELECT * FROM faqs");
String tt;
while (RS.next()) {
tt = RS.getString("Answer");
out.print("<li>" + RS.getString("Subject") + "</li>");
out.print("<pre>" + tt + "</pre>");
}
RS.close();
%>
啟動伺服器並在瀏覽器中存取該 JSP 頁面,即可看到從資料庫動態讀取的 FAQ 列表。此範例展示了 JDBC 結合 JSP 實現動態網頁的基本流程,為後續更複雜的資料庫應用奠定基礎。