mm.MySQL 是一款純 Java 實作的 Type 4 JDBC 驅動程式,符合 JDBC 2.0 規範。當前版本為 2.0 pre 5 (beta),可從官方網站 下載最新版本。
mm.MySQL 壓縮包。C:\mm.MySQL.jdbc-2.0pre5。CLASSPATH,將驅動程式路徑加入:
.;C:\jdk1.2.2\lib\tools.jar;C:\jdk1.2.2\lib\dt.jar;C:\mm.MySQL.jdbc-2.0pre5
驅動類別名稱為 org.gjt.mm.mysql.Driver,註冊方式:
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
標準格式:
jdbc:mysql://[hostname][:port]/dbname[?param1=value1¶m2=value2]...
| 參數名 | 說明 | 預設值 |
|---|---|---|
| user | 資料庫使用者名稱 | 無 |
| password | 資料庫密碼 | 無 |
| autoReconnect | 連線中斷時是否自動重連 | false |
| maxReconnects | 自動重連最大嘗試次數 | 3 |
| initialTimeout | 重連前等待秒數 | 2 |
| maxRows | 查詢最大回傳行數 (0 表不限制) | 0 |
| useUnicode | 是否使用 Unicode 輸出 | false |
| characterEncoding | 字元編碼 (搭配 useUnicode 使用) | 無 |
同時啟用 useUnicode=true 與 characterEncoding=8859_1 (或 GBK、UTF-8 視資料庫編碼而定) 即可正確處理中文資料:
jdbc:mysql://localhost/test?user=root&useUnicode=true&characterEncoding=8859_1
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');
<%@ 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 規範的可捲動結果集功能。