`
56858752
  • 浏览: 60241 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

dbcp连接池代码

阅读更多
连接池:PoolManager.java

package com.student.comm;

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/student",//URL    
			Name = "root",//用户名    
			Password = "root";//密码    

	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);
                           //取config.properties配置文件的信息
			driver = props.getProperty("MYSQL_DRIVER");
			url = props.getProperty("MYSQL_URL");
			Name = props.getProperty("MYSQL_LOGIN_NAME");
			Password = props.getProperty("MYSQL_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);
	}
	
	public static void main(String[] args) {            
        try {    
            Connection conn = PoolManager.getConnection();    
            if(conn != null){    
                Statement statement = conn.createStatement();    
                ResultSet rs = statement.executeQuery("select * from article");    
                int c = rs.getMetaData().getColumnCount(); 
                while(rs.next()){                         
                    for(int i=1;i<=c;i++){    
                        System.out.print(rs.getObject(i));    
                    }    
                }    
                rs.close();    
            }    
            PoolManager.freeConnection(conn);    
        } catch (SQLException e) {              
            e.printStackTrace();    
        }    
   
    }    

}


并在当前目录下建config.properties文件。
MYSQL_DRIVER = com.mysql.jdbc.Driver

MYSQL_URL = jdbc:mysql://localhost:3306/xbj

MYSQL_LOGIN_NAME = root

MYSQL_LOGIN_PASSWORD = root

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics