DBCP是Apache的一个开源项目:
commons.dbcp.jar
DBCP依赖Apache的另外2个开源项目
commons.collections.jar和commons.pool.jar
下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。
以下是我的连接池
java 代码
-
package selfservice;
-
-
import java.io.FileNotFoundException;
-
import java.io.IOException;
-
import java.sql.Connection;
-
import java.sql.DriverManager;
-
import java.sql.ResultSet;
-
import java.sql.SQLException;
-
import java.sql.Statement;
-
-
import org.apache.commons.dbcp.ConnectionFactory;
-
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
-
import org.apache.commons.dbcp.PoolableConnectionFactory;
-
import org.apache.commons.dbcp.PoolingDriver;
-
import org.apache.commons.pool.ObjectPool;
-
import org.apache.commons.pool.impl.GenericObjectPool;
-
-
-
public class PoolManager {
-
private static String
-
driver="oracle.jdbc.driver.OracleDriver",
-
url = "jdbc:oracle:thin:@192.168.0.40:1521:drcom",
-
Name="drcom",
-
Password="drcom";
-
-
private static Class driverClass = null;
-
private static ObjectPool connectionPool = null;
-
-
public PoolManager(){
-
}
-
-
-
-
-
-
private static void loadProperties(){
-
try {
-
java.io.InputStream stream = new java.io.FileInputStream("config.properties");
-
java.util.Properties props = new java.util.Properties();
-
props.load(stream);
-
-
driver = props.getProperty("ORACLE_DRIVER");
-
url = props.getProperty("ORACLE_URL");
-
Name = props.getProperty("ORACLE_LOGIN_NAME");
-
Password = props.getProperty("ORACLE_LOGIN_PASSWORD");
-
-
} catch (FileNotFoundException e) {
-
System.out.println("读取配置文件异常");
-
} catch(IOException ie){
-
System.out.println("读取配置文件时IO异常");
-
}
-
}
-
-
-
-
-
private static synchronized void initDataSource() {
-
if (driverClass == null) {
-
try {
-
driverClass = Class.forName(driver);
-
} catch (ClassNotFoundException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
-
-
-
-
-
public static void StartPool() {
-
loadProperties();
-
initDataSource();
-
if (connectionPool != null) {
-
ShutdownPool();
-
}
-
try {
-
connectionPool = new GenericObjectPool(null);
-
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, Name, Password);
-
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
-
Class.forName("org.apache.commons.dbcp.PoolingDriver");
-
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
-
driver.registerPool("dbpool", connectionPool);
-
System.out.println("装配连接池OK");
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
}
-
-
-
-
-
public static void ShutdownPool() {
-
try {
-
PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
-
driver.closePool("dbpool");
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
-
-
-
-
-
-
public static Connection getConnection() {
-
Connection conn = null;
-
if(connectionPool == null)
-
StartPool();
-
try {
-
conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:dbpool");
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
return conn;
-
}
-
-
-
-
-
-
-
-
public static Connection getConnection(String name){
-
return getConnection();
-
}
-
-
-
-
-
-
public static void freeConnection(Connection conn){
-
if(conn != null){
-
try {
-
conn.close();
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
-
-
-
-
-
-
public static void freeConnection (String name,Connection con){
-
freeConnection(con);
-
}
-
-
-
-
-
-
-
public static void main(String[] args) {
-
try {
-
Connection conn = PoolManager.getConnection();
-
if(conn != null){
-
Statement statement = conn.createStatement();
-
ResultSet rs = statement.executeQuery("select * from tblgxinterface");
-
int c = rs.getMetaData().getColumnCount();
-
while(rs.next()){
-
System.out.println();
-
for(int i=1;i<=c;i++){
-
System.out.print(rs.getObject(i));
-
}
-
}
-
rs.close();
-
}
-
PoolManager.freeConnection(conn);
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
-
}
-
-
}
以上创建一个连接池,并从连接池中得到连接,连接池会管理每个连接,以上测试通过。
阅读(858) | 评论(0) | 转发(0) |