Connection Pool (3)

来源:互联网 发布:javascript 获取前url 编辑:程序博客网 时间:2024/06/04 23:22
Connection Pool (3)
(史帝芬, 2005/4/9, hi.steven@gmail.com)
這裡介紹的Connection Pool是以MS SQL Server為資料庫,使用WSAD開發程式時,在WSAD中該如何設定。我使用的環境如下:
  • WSAD 5.1.2
  • MS SQL Server 2000
假設在SQL Server中有一個資料庫名為MyDB,一個Table Employee,登入帳號steven,密碼password。 Employee的欄位如下:
欄位型別長度說明EmpIDvarchar10員工編號CNamevarchar10中文姓名ENamevarchar30英文姓名
設定前先安裝SQL Server的JDBC,並將msbase.jar、mssqlserver.jar、msutil.jar設定在classpath裡,或複製到C:/WSAD512/runtimes/base_v51/lib (假設WSAD安裝在 C:/WSAD512)。
以下說明設定的方法:
  • 設定JAAS
    如圖1開啟伺服器設定,並選擇安全頁面,按"JAAS鑑別項目"右邊的"新增"。將出現如圖2的對話框,別名可任意取,然後輸入使用都ID (steven) 和密碼 (password) 後按"確定"。

    圖1

    圖2

  • 設定資料來源
    。點選"資料來源"頁面,將看到如圖3。
    。按第一個"新增"按鍵將看到如圖4的對話框,如圖4選後按"下一步",將顯示圖5的對話框,在名稱處打入名稱後按"完成,這個名稱可任意取名。
    。接著在"資料來源"頁面按第二個"新增"按鍵,將會出現圖6,如圖選擇後按下一步。
    。此時會出現圖7的對話框,輸入"名稱"、"JNDI名稱",並選擇"儲存器管理的鑑別別名"後按"下一步"。
    。出現圖8的對話框後,輸入databaseName為MyDB,serverName為SQL Server所在電腦的名稱或IP ,然後按"完成"。

    圖3

    圖4

    圖5

    圖6

    圖7

    圖8

  • 設定Web部署描述子
    開啟"Web部署描述子",選擇"參照"頁面,再選擇"資源",按右上的"瀏覽",選擇"javax.sql.DataSource",然後按左下的 "新增",新增一個jdbc/mydb,並在右下的"JNDI名稱"輸入jdbc/mydb。

    圖9

  • Sample --- Employee.java
    package tw.idv.idealist.demo;import java.sql.*;import java.util.ArrayList;import javax.naming.*;import javax.sql.*;public class Employee {public ArrayList getAllEmpId() {ArrayList a = new ArrayList();Connection conn = null;Statement stmt = null;ResultSet rs = null;InitialContext jndiCntx;try {jndiCntx = new InitialContext();DataSource ds =     (DataSource) jndiCntx.lookup("java:comp/env/jdbc/mydb");conn = ds.getConnection();stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,     ResultSet.CONCUR_READ_ONLY);String sql = "select * from Employee";rs = stmt.executeQuery(sql);while (rs.next()) {a.add(rs.getString("empid"));}} catch (NamingException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {if (conn != null) {try {conn.close();} catch (SQLException e1) {e1.printStackTrace();}conn = null;}}return a;}}
  • Sample --- index.jsp
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@ page import="java.util.*" %><%@ page import="tw.idv.idealist.demo.*" %><HTML><HEAD><%@ page language="java" contentType="text/html; charset=BIG5" pageEncoding="BIG5" %><META http-equiv="Content-Type" content="text/html; charset=BIG5"><META http-equiv="Content-Style-Type" content="text/css"><TITLE>index.jsp</TITLE></HEAD><BODY><%Employee dbEmployee = new Employee();ArrayList a = dbEmployee.getAllEmpId();for(int i = 0; i < a.size(); i++) {String empid = (String) a.get(i);out.println("員工編號 => " + empid + "<br>");}%></BODY></HTML>
  • 測試
    啟動伺服器後,執行index.jsp,可以看到如圖10的結果。

    圖10