首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

JSP 連接 MySQL:mm.MySQL JDBC 驅動程式安裝與使用指南

     編輯:MySQL 資料庫相關知識

mm.MySQL 是一款純 Java 實作的 Type 4 JDBC 驅動程式,符合 JDBC 2.0 規範。當前版本為 2.0 pre 5 (beta),可從官方網站 下載最新版本。

安裝步驟

  1. 下載 mm.MySQL 壓縮包。
  2. 解壓縮至任意目錄,例如 C:\mm.MySQL.jdbc-2.0pre5。
  3. 修改系統環境變數 CLASSPATH,將驅動程式路徑加入:
    .;C:\jdk1.2.2\lib\tools.jar;C:\jdk1.2.2\lib\dt.jar;C:\mm.MySQL.jdbc-2.0pre5

程式設計要點

1. 註冊驅動程式

驅動類別名稱為 org.gjt.mm.mysql.Driver,註冊方式:

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

2. JDBC URL 參數詳解

標準格式:

jdbc:mysql://[hostname][:port]/dbname[?param1=value1&param2=value2]...
參數名說明預設值
user資料庫使用者名稱無
password資料庫密碼無
autoReconnect連線中斷時是否自動重連false
maxReconnects自動重連最大嘗試次數3
initialTimeout重連前等待秒數2
maxRows查詢最大回傳行數 (0 表不限制)0
useUnicode是否使用 Unicode 輸出false
characterEncoding字元編碼 (搭配 useUnicode 使用)無

3. 解決中文亂碼關鍵設定

同時啟用 useUnicode=true 與 characterEncoding=8859_1 (或 GBK、UTF-8 視資料庫編碼而定) 即可正確處理中文資料:

jdbc:mysql://localhost/test?user=root&useUnicode=true&characterEncoding=8859_1

完整 JSP 範例:通訊錄應用

建立資料表

CREATE DATABASE addressbook;
USE addressbook;
CREATE TABLE addressbook (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30),
    address VARCHAR(255),
    phone VARCHAR(20)
);
INSERT INTO addressbook (name, address, phone) VALUES ('jjx', 'zhejiang yuyao', '0574-2222222');

JSP 程式碼

<%@ page import="java.sql.*" %>
<%
    out.println("通訊錄!");
    try {
        Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    } catch (Exception e) {
        out.println("Unable to load driver: " + e.getMessage());
    }

    try {
        Connection conn = DriverManager.getConnection(
            "jdbc:mysql://localhost/addressbook?user=root&password=jjx&useUnicode=true&characterEncoding=8859_1"
        );
        // 使用 JDBC 2.0 Scrollable ResultSet
        Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        ResultSet rs = stmt.executeQuery("SELECT * FROM addressbook");
        
        out.println("<table border=1><tr><th>ID</th><th>姓名</th><th>地址</th><th>電話</th></tr>");
        while (rs.next()) {
            out.println("<tr><td>" + rs.getInt("id") + "</td>" +
                        "<td>" + rs.getString("name") + "</td>" +
                        "<td>" + rs.getString("address") + "</td>" +
                        "<td>" + rs.getString("phone") + "</td></tr>");
        }
        out.println("</table>");
        rs.close();
        stmt.close();
        conn.close();
    } catch (SQLException e) {
        out.println("SQL Error: " + e.getMessage());
    }
%>

測試重點: 範例中使用 ResultSet.TYPE_SCROLL_SENSITIVE 驗證驅動程式是否完整支援 JDBC 2.0 規範的可捲動結果集功能。

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