您的位置:首页 > 数据库

j2se数据库连接池,dbcp使用模板

2010-07-22 11:29 399 查看
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="com.mysql.jdbc.Driver",//驱动
url = "jdbc:mysql://localhost:3306/test",//URL
Name="root",//用户名
Password="ssg";//密码

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(DBCP).properties");
java.util.Properties props = new java.util.Properties();
props.load(stream);

driver = props.getProperty("driverClassName");
url = props.getProperty("url");
Name = props.getProperty("username");
Password = props.getProperty("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 myuser");
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();
statement.close();
}
PoolManager.freeConnection(conn);
} catch (SQLException e) {
e.printStackTrace();
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: