dbcp连接池实现

DBCP依赖Apache的另外2个开源项目
commons.collections.jar和commons.pool.jar
下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。
以下是连接池代码:
packageselfservice;

importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importorg.apache.commons.dbcp.ConnectionFactory;
importorg.apache.commons.dbcp.DriverManagerConnectionFactory;
importorg.apache.commons.dbcp.PoolableConnectionFactory;
importorg.apache.commons.dbcp.PoolingDriver;
importorg.apache.commons.pool.ObjectPool;
importorg.apache.commons.pool.impl.GenericObjectPool;

publicclassPoolManager...{
privatestaticString
driver
="oracle.jdbc.driver.OracleDriver",//驱动
url="jdbc:oracle:thin:@192.168.0.40:1521:drcom",//URL
Name="drcom",//用户名
Password="drcom";//密码

privatestaticClassdriverClass=null;
privatestaticObjectPoolconnectionPool=null;

publicPoolManager()...{
}

privatestaticvoidloadProperties()...{
try...{
java.io.InputStreamstream
=newjava.io.FileInputStream("config.properties");
java.util.Propertiesprops
=newjava.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(FileNotFoundExceptione)...{
System.out.println(
"读取配置文件异常");
}
catch(IOExceptionie)...{
System.out.println(
"读取配置文件时IO异常");
}

}


privatestaticsynchronizedvoidinitDataSource()...{
if(driverClass==null)...{
try...{
driverClass
=Class.forName(driver);
}
catch(ClassNotFoundExceptione)...{
e.printStackTrace();
}

}

}


publicstaticvoidStartPool()...{
loadProperties();
initDataSource();
if(connectionPool!=null)...{
ShutdownPool();
}

try...{
connectionPool
=newGenericObjectPool(null);
ConnectionFactoryconnectionFactory
=new
DriverManagerConnectionFactory(url,Name,Password);
PoolableConnectionFactorypoolableConnectionFactory
=new
PoolableConnectionFactory(connectionFactory,connectionPool,
null,null,
false,true);
Class.forName(
"org.apache.commons.dbcp.PoolingDriver");
PoolingDriverdriver
=(PoolingDriver)DriverManager.getDriver
(
"jdbc:apache:commons:dbcp:");
driver.registerPool(
"dbpool",connectionPool);
System.out.println(
"装配连接池OK");
}
catch(Exceptione)...{
e.printStackTrace();
}

}


publicstaticvoidShutdownPool()...{
try...{
PoolingDriverdriver
=(PoolingDriver)DriverManager.getDrive
(
"jdbc:apache:commons:dbcp:");
driver.closePool(
"dbpool");
}
catch(SQLExceptione)...{
e.printStackTrace();
}

}


publicstaticConnectiongetConnection()...{
Connectionconn
=null;
if(connectionPool==null)
StartPool();
try...{
conn
=DriverManager.getConnection("jdbc:apache:commons:dbcp:dbpool");
}
catch(SQLExceptione)...{
e.printStackTrace();
}

returnconn;
}


publicstaticConnectiongetConnection(Stringname)...{
returngetConnection();
}


publicstaticvoidfreeConnection(Connectionconn)...{
if(conn!=null)...{
try...{
conn.close();
}
catch(SQLExceptione)...{
e.printStackTrace();
}

}

}

publicstaticvoidfreeConnection(Stringname,Connectioncon)...{
freeConnection(con);
}

publicstaticvoidmain(String[]args)...{
try...{
Connectionconn
=PoolManager.getConnection();
if(conn!=null)...{
Statementstatement
=conn.createStatement();
ResultSetrs
=statement.executeQuery("select*from
tblgxinterface");
intc=rs.getMetaData().getColumnCount();
while(rs.next())...{
System.out.println();
for(inti=1;i<=c;i++)...{
System.out.print(rs.getObject(i));
}

}

rs.close();
}

PoolManager.freeConnection(conn);
}
catch(SQLExceptione)...{
e.printStackTrace();
}

}

}

以上创建一个连接池,并从连接池中得到连接,连接池会管理每个连接,以上测试通过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值