日期:2014-05-18  浏览次数:20761 次

有没有现成的数据库连接池程序?
各位大虾:  
      我要做一个web程序,主要是和数据库打交道。以前我连接数据库都需要一次连接一次,现我想改用数据库连接池,可不知道如何做?
      谢谢先

------解决方案--------------------
tomcat自带的。
------解决方案--------------------
用tomcat自带的基本不用写程序获得连接了啊
lookup就可以
用完自动放回去
------解决方案--------------------
是不是要这个??

import java.io.*;
import java.sql.*;
import java.util.*;

public class ConnectionPool {
static final int MAX_CONNECTION = 10;//最大连接数
static Vector connections = null;//存放连接
String hostname= "com.microsoft.jdbc.sqlserver.SQLServerDriver ";
String login= "sa ",password= " ";
String connectString = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=HotelManage ";
static ConnectionPool instance =null;

public static synchronized ConnectionPool getInstance()//实例化
{
if (instance ==null)
instance = new ConnectionPool();
return instance;
}
public synchronized void initialize()//初始化
{
if (connections == null)
try
{
Class.forName(hostname);
connections = new Vector();
int count =0;
while (count <MAX_CONNECTION)
{
Connection conn = DriverManager.getConnection(connectString, login, password);
connections.addElement(conn);
count++;
}
}catch(SQLException sqle){}catch(ClassNotFoundException cnfe){}


}
public synchronized Connection getConnection()//获得可用连接
{
Connection conn = null;
if(connections == null)
return null;
if(connections.size()> 0)
{
conn=(Connection)connections.elementAt(0);
connections.removeElementAt(0);
}
return conn;
}
public synchronized void putConnection(Connection conn)//返回可用连接
{
connections.addElement(conn);
notifyAll();
}
public synchronized void removeAllConnections()//清空connections矢量
{
try{
if(connections ==null)
return;
int sz=connections.size();
for(int i=0;i <sz;i++)
{
Connection conn =(Connection)connections.elementAt(i);
conn.close();
}
connections.removeAllElements();
connections=null;
}catch(SQLException sqle){}
}

}
------解决方案--------------------
前些天发了个数据库连接总结的 希望大家补充下 2天没人看 悲哀呀
------解决方案--------------------
现在的服务器基本上都支持管理数据库连接池的功能,你只要在服务器中配置好你的数据源后,在程序里lookup就可以使用了,你写的那是你自己实现的,如果自定义的连接池,好想有个proxool的东东。它要你自己编程实现自己的连接池管理功能,类似你写的那东西。

不同的服务器配置不同,给个tomcat的例子(也可以在tomat的图形界面配置,这里直接改配置文件):

在server.conf文件中,找到你的应用,加上如下代码:
<Context path= "/desconn " reloadable= "true " docBase= "D:\tomcatApp\TestApp\WebRoot " workDir= "D:\tomcatApp\TestApp\WebRoot\WEB-INF\Work ">

<!-- 配置数据源,JNDI名字为 “jdbc/testDS” -->
<Resource auth= "Container " description= "test MS Connection " name= "jdbc/testDS " type= "javax.sql.DataSource "/>
<ResourceParams name= "jdbc/testDS ">
<parameter>
<name> factory </name>
<value> org.apache.commons.dbcp.BasicDataSourceFactory </value>
</par