2011-07-07

JSP 以 JDBC 連結 MySQL

Environment**********
OS : Win 7
Tomcat : 7.0.16
MySQL : 5.?
JDBC : 5.1.14
JDBC-ODBC : 5.1
************************
以 JDBC 連結 MySQL 基本的語法就是
Class.forName(“com.mysql.jdbc.Driver”);
Connection con=java.sql.Drivermanager.getConnection(“jdbc:mysql://localhost:3306/資料庫名稱?使用字元”,”帳號”,”密碼”);
但我的就是無法連結

以下是總結出來,這次對一些參數修正過的紀錄
1. Tomcat 的 CATALINA 環境路徑修正
請參考:前一篇 Tomcat 修正
2. JDBC Driver 放置的位置
應該 mysql-connector-java-版本-bin.jar 放置到 Tomcat 的安裝路徑中 lib 的資料夾內。
以 Tomcat 7.0.16 的預設安裝位置在
C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\
3. JDBC 在環境變數的位置問題
JDBC 同樣在 Win 的要指出它的位置。因為以前曾獨立安裝過 JDBC,因此環境變數 CLASSPATH 預設路徑在
C:\Program Files\Java\mysql-connector-java-5.1.14
雖然在「2.」中也有將 JDBC 複製到 Tomcat\lib,供 Tomcat 使用,但這樣是無法正確啟動 JDBC,必需將 CLASSPATH 的 JDBC 指向 Tomcat\lib\ 資料夾內的 JDBC! 
4. 連結的語法注意
localhost 應加上「:3306」

我想我最主要的問題就在「2、3」,一開始是放錯位置,將 JDBC 至於 Tomcat\bin\ 內了,不知道是參考哪裡的資料而放錯,還是真的放錯的。

就「3」而言,環境變數錯誤是沒料到之處,是「MySQL Server 簡介-JDBC」中特別題到關於 JDBC 環境變數,才去修改看看,一改一切就成功了~~

ODBC Driver 也是有安裝,它的安裝不是很困難,基本上照書上寫的都沒有問題。在「MySQL Server 簡介-ODBC」中也有清楚明白的教學。
檢驗究竟 Driver 是否有啟動,或者啟動了哪些 Driver,可建立一個簡單的 jsp 才測試。
------------------- ↓↓↓↓↓ -------------------
<%@ page contentType="text/html; charset=big5" import="java.sql.*, java.util.*" %>
<html>
<head><title>目前使用的 Driver</title>
</head>
<%

out.println("目前載入的JDBC驅動程式:<p>");
  Enumeration enuDriver = DriverManager.getDrivers();
    String strName;
     while (enuDriver.hasMoreElements()) {
     strName = enuDriver.nextElement().getClass().getName();
     out.println("<b>" + strName + "</b>, ");
  }
  out.println("<hr>");
%>
</body>
</html>
------------------- ↑↑↑↑↑ -------------------
一開始只有看到
「目前載入的JDBC驅動程式:
sun.jdbc.odbc.JdbcOdbcDriver,」
(這當然是因為設定了 ODBC ) 不過也讓我意外了一下,以為什麼都沒啟動。
這至少有個明確的線索,無論是對 ODBC 或 JDBC-ODBC 可以確定 ODBC 沒有問題,而是出在 JDBC 上。
觀念整理:
JDBC:當 jsp 需連結資料庫時,透過 JDBC Driver 連結 Server 上 MySQL 的 3306 port 來取得資料庫資料。

JDBC-ODBC:實際上是 ODBC Driver,主要的功能是將存在的 Access 資料庫轉入 MySQL 中。轉換的過程在驅動過程中也只又第一次會使用,之後 ODBC 變結束,主要還是使用 JDBC 來連線 MySQL!
因此像我沒有 Access 資料庫,根本就不用 ODBC。

沒有留言: