关于连接池的疑惑
我的开发环境是 myeclipse4.1 + struts1.2 + tomcat5.0
连接数据库那块是我是在 struts-config.xml 里配置的,代码如下
<data-sources >
<data-source type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="description" value="mysql" />
<set-property property="driverClassName" value="com.mysql.jdbc.Driver" />
<set-property property="url" value="jdbc:mysql://localhost/mydatabase?useUnicode=true&characterEncoding=gb2312&zeroDateTimeBehavior=convertToNull" />
<set-property property="username" value="myname" />
<set-property property="password" value="1111" />
<set-property property="minCount" value="1" />
<set-property property="maxCount" value="20" />
<set-property property="readOnly" value="false" />
<set-property property="autoCommit" value="true" />
<set-property property="LoginTimeout" value="10000" />
</data-source>
</data-sources>
能对数据库进行正常增删改查操作了.只是我每次对数据库操作都得建立一个connection, 好像速度挺慢的.
看了很多朋友的关于数据库连接池的文章,别人都在 tomcat 里配置的,而我现在不是.
请问,用我这种方式,能实现连接池么? 如果能,又该如何做?
问题点数:50、回复次数:2Top
1 楼li_d_s(鄙视那些不懂Java却跑来乱骂的人,.NET没啥了不起)回复于 2006-03-03 12:39:11 得分 50
能对数据库进行正常增删改查操作了.只是我每次对数据库操作都得建立一个connection
==========
代码呢?Top
2 楼halfheart(半点心)回复于 2006-03-03 13:05:11 得分 0
public class DBPool {
private DataSource ds = null;
private static Connection conn;
private PreparedStatement pstmt;
public DBPool(DataSource ds){
this.ds = ds;
}
private boolean getConnStatus(){
boolean fConn = true;
try{
if ((conn == null) || conn.isClosed()){
conn = ds.getConnection();
return true;
}
if (conn != null && !conn.isClosed()) {
return true;
}
}catch(Exception ex){
return false;
}
return fConn;
}
public boolean processUpdate(String strSql, Vector vParam){
if (this.ds == null){
return false;
}
boolean fSuccess = false;
try{
if (getConnStatus()){
// conn = ds.getConnection();
pstmt = conn.prepareStatement(strSql);
if (vParam != null){
for (int i=0; i<vParam.size(); i++){
pstmt.setObject(i+1, vParam.get(i));
}
}
pstmt.executeUpdate();
fSuccess = true;
}
}catch(Exception ex){
return fSuccess;
}
return fSuccess;
}
public ResultSet processQuery(String strSql, Vector vParam){
if (this.ds == null){
return null;
}
ResultSet rs = null;
try{
if (getConnStatus()){
// conn = ds.getConnection();
pstmt = conn.prepareStatement(strSql);
if (vParam != null){
for (int i=0; i<vParam.size(); i++){
pstmt.setObject(i+1, vParam.get(i));
}
}
rs = pstmt.executeQuery();
}
}catch(Exception ex){
return rs;
}
return rs;
}
}
Top




