⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poolmanager.java

📁 用java写一个数据库连接池的例子值的一看
💻 JAVA
字号:

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 2008-1-3
 * Time: 17:26:50
 * To change this template use Options | File Templates.
 */
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";//密码  */

            url = "jdbc:oracle:thin:@127.0.0.1:1521:love",//URL
            Name="dev",//用户名
            Password="dev";//密码

    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 tr_stktype");
                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();
            }
            try{
            Thread.sleep(100);
            }catch(Exception ex){
              ex.printStackTrace()   ;
            }

            Connection conn1 = PoolManager.getConnection();
            if(conn1 != null){
                Statement statement = conn1.createStatement();
                ResultSet rs = statement.executeQuery("select * from tr_dealtype");
                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);
            PoolManager.freeConnection(conn1);
        } catch (SQLException e) {
            e.printStackTrace();
        }




        System.out.print("finially");

    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -