Connection Pool (3)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值