2010/07/28

Servlet & JSP 留言版:列出所有留言 - DB連線

準備來寫第一個功能:列出所有留言
但是列出留言需要到DB抓資料出來,抓出來又要放在哪?
似乎沒有這麼簡單可以靠一隻Servlet完成;所以在此之前需要先完成兩件事情
  1. 連接DB
  2. 準備Model

連接DB

這個範例是使用Mysql做為DB,請先參考上一篇完成DB的設定
因為DB連線非常多地方用的到,所以可以單獨出來為一隻Class這樣可以重複使用
請在Eclipse下新增一個Java Class,我叫它DBConn.java 

DBConn.java
========
package cc.asper;
import java.sql.*;

public class DBConn {
    private String url = "jdbc:mysql://localhost:3306/guestbook?useUnicode=true&characterEncoding=utf8";
    private String user = "user";
    private String passwd = "123456";
    private Connection conn = null;
    public void DBconn(){
       
    }
   
    public Connection getConnection() throws Exception{
        if( conn == null ){
            try{
                Class.forName("com.mysql.jdbc.Driver");
             conn = DriverManager.getConnection(url, user, passwd);               
            }catch(Exception ex){
                throw ex;
            }
        }
        return conn;
    }
   
    public void close() throws Exception{
        try{
            if(conn != null) conn.close();
        }catch(Exception ex){
            throw ex;
        }finally{
            conn = null;
        }
    }
}

說明:
這隻Class有兩個方法:
geConnection() : 取得連線,如果連線存在則直接回傳,否則建立一個
close() : 關閉連線 

連線資訊建立,說明如下:
  1. 連線資訊:指定三個變數(url, user, passwd),把DB的連線資訊存在變數中。
  2. url 變數:格式為 jdbc: DB_type :// DB_address : DB_port / DB_name ? 其他參數。
  3. 其他參數:useUnicode=true&characterEncoding=utf8,設定該DB連線為Unicode編碼。

開始建立連線

  1. Class.forName("com.mysql.jdbc.Driver");
    指定使用Mysql Driver,Driver需到官網下載 jar 檔案後放至於WEB-INF\lib下,才可使用。
  2. conn = DriverManager.getConnection(url, user, passwd);
    把設定好的參數丟進上數方法內即可取得連線
  3. 建立、關閉連線都需包在 Try / Catch 內捕捉錯誤
  4. 回傳conn

關閉連線

建議先檢查是否不為 null 才使用 conn.close() 關閉。
再將conn設為null;

寫好DBConn.java後,在需要連接DB前,將其實體化後呼叫getConnection()即可,
範例:
DBconn dbcon = new DBConn();

//實體化一個DBConn物件,並指定到dbcon變數,該變數為DBConn類別。
conn = dbcon.getConnection();     //取得DB連線資源

◎關於如何使用SQL語法Query資料,會在建立Model時說明。
至此已經準備好DB連線的物件;

但是怎樣操作DB存取資料,回傳的資料要擺哪,擺好的資料要怎麼給Servlet處理等,就要介紹Model了...

沒有留言:

張貼留言