mysql數據庫連接池配置教程

在與數據庫進行連接的時候,會牽扯到數據庫連接池的配置,本文將詳細介紹mysql數據庫連接池配置,需要了解跟多的朋友可以參考下

第一步:寫javabean
代碼如下:
package withouttears.jdbc.db;
import java.util.HashMap;
import java.sql.*;
//JNDI有兩個核心接口Context和DirContext,
//Context中包含了基本的名字操作,而DirContext則將這些操作擴展到目錄服務。
import javax.naming.Context;
import javax.naming.InitialContext;
//數據庫資源的連接工廠是javax.sql.DataSource對象,
//它可以創建java.sql.Connection數據庫連接對象。
import javax.sql.DataSource;
//目前您可以從Java開發者連接(http://java.sun.com/products/jdbc/download.html#rowsetcobundle1_0)
//下載CachedRowSet的實現。下載并解壓縮安裝文件后,將”rowset.jar”文件放到您的類目錄下。
//CachedRowSet在sun.jdbc.rowset包中。
import sun.jdbc.rowset.CachedRowSet;
/**
* 作者:wiThouTTears
* 時間:2006-12-13
* */
public class Database {
/**************************************************************/
/* 函數:localhost
* 功能:建立連接池
* */
private static DataSource localhost(){
DataSource ds=null;
//在HashMap中通過get()來獲取value,通過put()來插入value,
//ContainsKey()則用來檢驗對象是否已經存在
HashMapcachedDs=new HashMap();
if(cachedDs.containsKey(“ds”))//取出空閑狀態的數據庫連接
{
/* 在DataSource中事先建立了多個數據庫連接,
* 這些數據庫連接保存在連接池(Connect Pool)中。
* Java程序訪問數據庫時,只需要從連接池中取出空閑狀態的數據庫連接;
* 當程序訪問數據庫結束,再將數據庫連接放回連接池。
* */
ds = (DataSource)cachedDs.get(“ds”);
}
else
try
{
/*在javax.naming包中提供了Context接口,
* 該接口提供了將對象和名字綁定,以及通過名字檢索對象的方法。
* */
Context initCtx = new InitialContext();
//lookup(String name):返回與指定的名字綁定的對象,獲得數據庫連接工廠
ds = (DataSource)initCtx.lookup(“java:comp/env/jdbc/testdb”);
cachedDs.put(“ds”, ds);
}
catch(Exception e)
{
e.printStackTrace();
}
return ds;
}
/**************************************************************/
/* 函數:getConnection
* 功能:庫的連接
* */
private static Connection getConnection(){
Connection conn = null;
try
{
DataSource ds = localhost();
conn = ds.getConnection();
}
catch(Exception e)
{
e.printStackTrace();
}
return conn;
}
/**************************************************************/
/* 函數:close
* 功能:關閉連接
* */
private static void close(Connection conn)
{
try
{
if(conn != null)
conn.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
/**************************************************************/
/* 函數:executeQuery
* 功能:數據查詢
* */
public static CachedRowSet executeQuery(String sql)
{
Connection conn=null;
CachedRowSet rs=null;
try{
rs=new CachedRowSet();
conn=getConnection();
Statement stmt=conn.createStatement();
ResultSet rs1=stmt.executeQuery(sql);
rs.populate(rs1);
}
catch(Exception e)
{
//System.out.println(e.toString());
}
finally{
try
{
conn.close();
}
catch(Exception ex)
{}
} return rs;
}
/**************************************************************/
/* 函數:executeUpdate
* 功能:數據更新(添加/更改/刪除)
* */
public static boolean executeUpdate(String sql)
{
boolean bl;
bl = false;
Connection conn = getConnection();
try
{
Statement stmt = conn.createStatement();
if(stmt.executeUpdate(sql) > 0)
stmt.close();
bl = true;
}
catch(SQLException e)
{
}
finally
{
close(conn);
}
return bl;
}
/**************************************************************/
}

編譯得到withouttears/db/Database.class并放到E:/MyWorkSpace/test/WEB-INF/classes下,即E:/MyWorkSpace/test/WEB-INF/classes/withouttears/db/Database.class,注意別弄錯了。
第二步:配置Tomcat(我用是Tomcat 5.5.7)
1. 在C:/Program Files/Tomcat 5.5.7/conf/Catalina/localhost下新建一個test.xml,內容如下:
注:docBase為你的web文件所在地,我用的是E:/MyWorkSpace/test。path可寫可不寫,但在Linux下必須寫上,Windows下不寫我測試可以用,最好寫上。這里的test.xml指定的文件夾不像我們平時用的那樣在C:/Program Files/Tomcat 5.5.7/webapps/test,不過目的一樣都是表示用http://localhost:8080/test/來訪問,相當于IIS下的虛擬目錄,可以是任意的。
2. 在C:/Program Files/Tomcat 5.5.7/conf/下建立context.xml,在E:/MyWorkSpace/test下新建WEB-INF/web.xml。
context.xml
代碼如下:

WEB-INF/web.xml
META-INF/context.xml

auth=”Container”
type=”javax.sql.DataSource”
driverClassName=”com.mysql.jdbc.Driver”
url=”jdbc:mysql://localhost/mytestdb”
username=”root”
password=”157744375″
maxActive=”100″
maxIdle=”30″
maxWait=”10000″
/>

注: 鏈接池配置文件,這樣我們就可以用第一步寫的Javabean類Database中的localhost()函數來讀取這個content.xml中的jdbc/testdb名稱
web.xml
代碼如下:



test


test.jsp

注: web.xml放web的默認主頁(如:test.jsp或者index.jsp)和程序中要用到servlet的映射,不管它我們這里用不到。
第三步:寫test.jsp
代碼如下:


Insert title

String sql=null;
sql=”select * from table_test”;
ResultSet rs=Database.executeQuery(sql);
try{
while(rs.next()){
%>
濮撳悕錛

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享