DBCP是Apache的一个开源项目:
commons.dbcp.jar
http://jakarta.apache.org/commons/dbcp/index.html
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
"
,
//
URL
Name
=
"
drcom
"
,
//
用户名
Password
=
"
drcom
"
;
//
密码
private
static
Class driverClass
=
null
;
private
static
ObjectPool connectionPool
=
null
;
public
PoolManager()
{
}
/** */
/**
* 装配配置文件
* initProperties
*/
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();
}
}
}
/** */
/**
* 连接池启动
*
@throws
Exception
*/
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();
}
}
/** */
/**
* 取得连接池中的连接
*
@return
*/
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;
}
/** */
/**
* 获取连接
* getConnection
*
@param
name
*
@return
*/
public
static
Connection getConnection(String name)
{
return
getConnection();
}
/** */
/**
* 释放连接
* freeConnection
*
@param
conn
*/
public
static
void
freeConnection(Connection conn)
{
if
(conn
!=
null
)
{
try
{
conn.close();
}
catch
(SQLException e)
{
e.printStackTrace();
}
}
}
/** */
/**
* 释放连接
* freeConnection
*
@param
name
*
@param
con
*/
public
static
void
freeConnection (String name,Connection con)
{
freeConnection(con);
}
/** */
/**
* 例子
* main
*
@param
args
*/
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();
}
}
}