yyg1107
這家伙很懶,什么都沒有留下
posts(15)
comments(20)
trackbacks(0)
BlogJava
聯系
聚合
管理
公告
聯系方式:
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
給我留言
查看公開留言
查看私人留言
隨筆分類
(11)
axis(1)
hibernate(1)
java(2)
js(2)
other(5)
隨筆檔案
(8)
2008年6月 (1)
2007年8月 (2)
2007年4月 (3)
2006年11月 (2)
文章分類
(37)
C++Builder(3)
eclipse(2)
html(4)
java(8)
jbpm(6)
JS(4)
other(4)
question handly!(4)
web容器(1)
workflow(1)
文章檔案
(36)
2007年4月 (2)
2007年3月 (1)
2007年1月 (2)
2006年12月 (2)
2006年11月 (3)
2006年10月 (11)
2006年9月 (2)
2006年7月 (2)
2006年6月 (1)
2006年5月 (1)
2006年4月 (6)
2006年3月 (3)
新聞檔案
(1)
2007年1月 (1)
收藏夾
(16)
好的BLOG(9)
收藏----blog(7)
JavaBlog
amigoxie
matrix
搜索
積分與排名
積分 - 32670
排名 - 1315
最新評論
1.?re: JS實現文本框輸入提供選擇框的提示功能-1
werewrewrwer
--wrewrwe
2.?re: struts啟動的一個錯誤!
更名struts-config.xml, remove && add struts capability,重新生成一個config.xml。
--barryken
3.?p
42
--2
4.?re: hql語句----隨機查詢取頭10條記錄[未登錄]
沒意思,這不就是分頁的那一部分代碼嘛!
--啊啊
5.?re: 第一次做成功的AXIS例子[未登錄]
樓主:能不能留下你的聯系方式!探討一下相關問題...
--hehe
閱讀排行榜
1.?JS實現文本框輸入提供選擇框的提示功能-1(7290)
2.?第一次做成功的AXIS例子(2426)
3.?命令行創建ODBC數據源(1542)
4.?struts啟動的一個錯誤!(1263)
5.?hibernate調用存儲過程例子(1005)
評論排行榜
1.?JS實現文本框輸入提供選擇框的提示功能-1(7)
2.?第一次做成功的AXIS例子(5)
3.?struts啟動的一個錯誤!(4)
4.?轉:如何在JAVA中使用日期 (0)
5.?命令行創建ODBC數據源(0)
View Post
JDBC數據庫連接池
ConnectionHandler.java
package
?com.ofis.DBConnection;
import
?java.lang.reflect.
*
;
import
?java.sql.
*
;
import
?org.apache.xalan.lib.sql.ConnectionPool;
/**?*/
/**
?*?
?*?數據庫連接的代理類
?*
?
*/
class
?ConnectionHandler?
implements
?InvocationHandler?
{
????Connection?dbconn;
????ConnectionPool?pool;
????
/**?*/
/**
?????*?構造函數
?????*?
@param
?connPool
?????
*/
????
public
?ConnectionHandler(ConnectionPool?connPool)?
{
????????
this
.pool?
=
?connPool;
????}
????
/**?*/
/**
?????*?
?????*?動態綁定Connection
?????*?
@param
?conn?Connection
?????*?
@return
?Connection
?????*?
?????
*/
????
public
?Connection?bind(Connection?conn)?
{
????????Class[]?interfaces?
=
?conn.getClass().getInterfaces();
????????
if
?(interfaces?
==
?
null
?
||
?interfaces.length?
==
?
0
)?
{
????????????interfaces?
=
?
new
?Class[
1
];
????????????interfaces[
0
]?
=
?Connection.
class
;
????????}
????????Connection?proxyConn?
=
?(Connection)?Proxy.newProxyInstance(conn.
????????????????getClass().getClassLoader(),?interfaces,?
this
);
????????
return
?conn;
????}
????
/**?*/
/**
?????*?調用攔截函數
?????
*/
????
public
?Object?invoke(Object?object,?Method?method,?Object[]?objectArray)?
throws
????????????Throwable?
{
????????Object?obj?
=
?
null
;
????????
if
?(
"
close
"
.equals(method.getName()))?
{
????????????pool.releaseConnection(dbconn);
????????}
?
else
?
{
????????????obj?
=
?method.invoke(dbconn,?objectArray);
????????}
????????
return
?obj;
????}
}
DBConnectionPool.java
package
?com.ofis.DBConnection;
import
?org.apache.xalan.lib.sql.ConnectionPool;
import
?java.sql.
*
;
import
?java.sql.SQLException;
import
?java.util.Properties;
import
?java.util.Vector;
/**?*/
/**
?*?數據庫連接池控制
?*
?
*/
public
?
class
?DBConnectionPool?
implements
?ConnectionPool
{
????
private
?
static
?Vector?pool;
????
private
?
final
?
int
?POOL_MAX_SIZE
=
40
;
????
static
?String?strDriver?
=
?
"
net.sourceforge.jtds.jdbc.Driver
"
;
????
static
?String?strURL?
=
"
jdbc:jtds:sqlserver://localhost:1433/template
"
;
????
public
?DBConnectionPool()?
{
????}
????
public
?
boolean
?isEnabled()?
{
????????
return
?
false
;
????}
????
public
?
void
?setDriver(String?string)?
{
????????
this
.strDriver?
=
?string;
????}
????
public
?
void
?setURL(String?string)?
{
????????
this
.strURL
=
string;
????}
????
public
?
void
?freeUnused()?
{
????}
????
public
?
boolean
?hasActiveConnections()?
{
????????
return
?
false
;
????}
????
public
?
void
?setPassword(String?string)?
{
????}
????
public
?
void
?setUser(String?string)?
{
????}
????
public
?
void
?setMinConnections(
int
?_int)?
{
????}
????
public
?
boolean
?testConnection()?
{
????????
return
?
false
;
????}
????
/**?*/
/**
?????*?得到數據庫連接操作
?????
*/
????
public
?
synchronized
?Connection?getConnection()?
throws
?SQLException?
{
????????
if
(pool
==
null
)
{
????????????pool
=
new
?Vector();
????????}
????????Connection?conn;
????????
if
(pool.isEmpty())
{
????????????conn
=
createConnection();
????????}
else
{
????????????
int
?last_idx
=
pool.size()
-
1
;
????????????conn
=
(Connection)pool.get(last_idx);
????????????pool.remove(pool.get(last_idx));
????????}
????????ConnectionHandler?connHandler
=
new
?ConnectionHandler(
this
);
????????
return
?connHandler.bind(conn);
????}
????
/**?*/
/**
?????*?釋放數據庫連接操作
?????
*/
????
public
?
synchronized
?
void
?releaseConnection(Connection?connection)?
throws
?SQLException?
{
????????
if
(pool.size()
>
POOL_MAX_SIZE)
{
????????????
try
?
{
????????????????connection.close();
????????????}
?
catch
?(SQLException?ex)?
{
????????????????ex.printStackTrace();
????????????}
????????}
else
{
????????????pool.add(connection);
????????}
????}
????
/**?*/
/**
?????*?創建數據庫連接操作
?????*?
@return
?????
*/
????
private
?
static
?Connection?createConnection()
{
????????Connection?conn;
????????
try
?
{
????????????Class.forName(strDriver);
????????????conn?
=
?DriverManager.getConnection(strURL,?
"
sa
"
,?
""
);
????????????
return
?conn;
????????}
?
catch
?(SQLException?ex)?
{
????????????
return
?
null
;
????????}
?
catch
?(ClassNotFoundException?ex)?
{
????????????
return
?
null
;
????????}
????}
????
public
?
void
?releaseConnectionOnError(Connection?connection)?
throws
????????????SQLException?
{
????}
????
public
?
void
?setPoolEnabled(
boolean
?_boolean)?
{
????}
????
public
?
void
?setProtocol(Properties?properties)?
{
????}
}
DBHelper.java
package
?com.ofis.DBConnection;
import
?java.sql.
*
;
/**?*/
/**
?*?數據庫連接操作
?*
?
*/
public
?
class
?DBHelper?
{
????
/**?*/
/**
?????*?得到數據庫連接
?????*?
@return
?????
*/
????
public
?
static
?Connection?getConnection()?
{
????????DBConnectionPool?cp
=
new
?DBConnectionPool();
????????cp.setDriver(
"
net.sourceforge.jtds.jdbc.Driver
"
);
????????cp.setURL(
"
jdbc:jtds:sqlserver://localhost:1433/template
"
);
????????Connection?conn?
=
?
null
;
????????
try
?
{
????????????conn?
=
?cp.getConnection();
????????}
?
catch
?(SQLException?ex)?
{
????????}
????????
return
?conn;
??}
????
/**?*/
/**
?????*?釋放數據庫連接
?????*?
@param
?conn?
?????
*/
????
public
?
static
?
void
?releaseConnection(Connection?conn)
{
????????DBConnectionPool?cp
=
new
?DBConnectionPool();
????????
try
?
{
????????????cp.releaseConnection(conn);
????????}
?
catch
?(SQLException?ex)?
{
????????}
????}
}
DBHelperTest.java
package
?com.ofis.DBConnection;
import
?java.sql.Connection;
import
?java.sql.ResultSet;
import
?java.sql.SQLException;
import
?java.sql.Statement;
import
?com.ofis.DBConnection.DBHelper;
import
?junit.framework.TestCase;
public
?
class
?DBHelperTest?
extends
?TestCase?
{
????
/**/
/*
?????*?Test?method?for?'com.ofis.DBConnection.DBHelper.getConnection()'
?????
*/
????
public
?
void
?testGetConnection()?
{
????????Connection?h1?
=
?DBHelper.getConnection()?;
????????Connection?h2?
=
?DBHelper.getConnection()?;
????????Connection?h3?
=
?DBHelper.getConnection()?;
????????Connection?h4?
=
?DBHelper.getConnection()?;
????????Connection?h5?
=
?DBHelper.getConnection()?;
????????
try
{
????????????Statement?stmt?
=
?h1.createStatement();
????????????ResultSet?rs?
=
?stmt.executeQuery(
"
select?*?from?tbusers
"
);
????????????
if
(rs.next())
????????????
{
????????????????System.out.println(rs.getString(
"
user_truename
"
));
????????????}
????????}
????????
catch
(SQLException?ex)
{
????????????System.err.println(ex.getMessage());
????????}
????????
????????
finally
?
{
????????????
if
?(h1?
!=
?
null
)?
{
????????????????DBHelper.releaseConnection(h1);
????????????}
????????????
if
?(h2?
!=
?
null
)?
{
????????????????DBHelper.releaseConnection(h2);
????????????}
????????????
if
?(h3?
!=
?
null
)?
{
????????????????DBHelper.releaseConnection(h3);
????????????}
????????????
if
?(h4?
!=
?
null
)?
{
????????????????DBHelper.releaseConnection(h4);
????????????}
????????????
if
?(h5?
!=
?
null
)?
{
????????????????DBHelper.releaseConnection(h5);
????????????}
????????????testCon();
????????????
????????}
????}
????
public
?
void
?testCon()
{
????????Connection?h1?
=
?DBHelper.getConnection()?;
????????Connection?h2?
=
?DBHelper.getConnection()?;
????????
try
{
????????????Statement?stmt?
=
?h1.createStatement();
????????????ResultSet?rs?
=
?stmt.executeQuery(
"
select?*?from?tbusers
"
);
????????????
if
(rs.next())
????????????
{}
????????}
????????
catch
(SQLException?ex)
{
????????????System.err.println(ex.getMessage());
????????}
????????
????????
finally
?
{
????????????
if
?(h1?
!=
?
null
)?
{
????????????????DBHelper.releaseConnection(h1);
????????????}
????????????
if
?(h2?
!=
?
null
)?
{
????????????????DBHelper.releaseConnection(h2);
????????????}
//
????????????if?(h3?!=?null)?{
//
????????????????DBHelper.releaseConnection(h3);
//
????????????}
//
????????????if?(h4?!=?null)?{
//
????????????????DBHelper.releaseConnection(h4);
//
????????????}
//
????????????if?(h5?!=?null)?{
//
????????????????DBHelper.releaseConnection(h5);
//
????????????}
????????????
????????}
????}
}
?
?
posted on 2006-09-30 13:42
young
閱讀(304)
評論(0)
編輯
收藏
所屬分類:
java
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Hibernate Gossip: 樂觀鎖定(Optimistic locking)
轉:如何在JAVA中使用日期
Jakarta Commons:巧用類和組件1 (3)
Jakarta Commons:巧用類和組件1 (2)
Jakarta Commons:巧用類和組件1 (1)
Struts VS Turbine [轉]
JDBC數據庫連接池
Powered by:
BlogJava
Copyright © young
主站蜘蛛池模板:
孙吴县
|
江永县
|
拜泉县
|
洛川县
|
中超
|
定陶县
|
澎湖县
|
新郑市
|
象州县
|
罗城
|
安义县
|
嵩明县
|
贺兰县
|
嘉黎县
|
绥滨县
|
木兰县
|
桂东县
|
台中市
|
东安县
|
富裕县
|
祁阳县
|
凤山市
|
余江县
|
侯马市
|
昭平县
|
彭阳县
|
天镇县
|
北流市
|
额尔古纳市
|
嘉禾县
|
东乌珠穆沁旗
|
仪陇县
|
陇西县
|
调兵山市
|
永安市
|
德州市
|
江西省
|
平遥县
|
康平县
|
凤山市
|
平南县
|