• DBCP JAVA 连接池


    1. package com.sinoglobal.db;  
    2.   
    3. import java.sql.Connection;  
    4. import java.sql.DriverManager;  
    5. import java.sql.ResultSet;  
    6. import java.sql.SQLException;  
    7. import java.sql.Statement;  
    8. import java.util.Locale;  
    9. import java.util.ResourceBundle;  
    10.   
    11. import org.apache.commons.dbcp.ConnectionFactory;  
    12. import org.apache.commons.dbcp.DriverManagerConnectionFactory;  
    13. import org.apache.commons.dbcp.PoolableConnectionFactory;  
    14. import org.apache.commons.dbcp.PoolingDriver;  
    15. import org.apache.commons.pool.ObjectPool;  
    16. import org.apache.commons.pool.impl.GenericObjectPool;  
    17.   
    18. @SuppressWarnings("unchecked")  
    19. public class PoolManager {  
    20.     private static String driver = "net.sourceforge.jtds.jdbc.Driver"; // 驱动  
    21.     private static String url = ""; // URL  
    22.     private static String name = "sa"; // 用户名  
    23.     private static String password = ""; // 密码  
    24.     private static Class driverClass = null;  
    25.     private static ObjectPool connectionPool = null;  
    26.     private static String poolname = "";  
    27.     private static ResourceBundle rb;  
    28.   
    29.     /** 
    30.      * 初始化数据源 
    31.      */  
    32.     private static synchronized void initDataSource() {  
    33.         if (driverClass == null) {  
    34.             try {  
    35.                 driverClass = Class.forName(driver);  
    36.             } catch (ClassNotFoundException e) {  
    37.                 e.printStackTrace();  
    38.             }  
    39.         }  
    40.     }  
    41.   
    42.     /** 
    43.      * 装配配置文件 initProperties 
    44.      */  
    45.     private static void loadProperties() {  
    46.         rb = ResourceBundle.getBundle("config", Locale.getDefault());  
    47.         driver = rb.getString("jdbc.sql.driverClassName");  
    48.         url = rb.getString("jdbc.sql.url");  
    49.         name = rb.getString("jdbc.sql.username");  
    50.         password = rb.getString("jdbc.sql.password");  
    51.         poolname = rb.getString("jdbc.sql.poolname");  
    52.     }  
    53.   
    54.     /** 
    55.      * 连接池启动 
    56.      *  
    57.      * @throws Exception 
    58.      */  
    59.     public static void StartPool() {  
    60.         loadProperties();  
    61.         initDataSource();  
    62.         if (connectionPool != null) {  
    63.             ShutdownPool();  
    64.         }  
    65.         try {  
    66.             connectionPool = new GenericObjectPool(null);  
    67.             ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(  
    68.                     url, name, password);  
    69.             new PoolableConnectionFactory(connectionFactory, connectionPool,  
    70.                     null, null, false, true);  
    71.             Class.forName("org.apache.commons.dbcp.PoolingDriver");  
    72.             PoolingDriver driver = (PoolingDriver) DriverManager  
    73.                     .getDriver("jdbc:apache:commons:dbcp:");  
    74.             driver.registerPool(poolname, connectionPool);  
    75.         } catch (Exception e) {  
    76.             e.printStackTrace();  
    77.         }  
    78.     }  
    79.   
    80.     /** 
    81.      * 释放连接池 
    82.      */  
    83.     public static void ShutdownPool() {  
    84.         try {  
    85.             PoolingDriver driver = (PoolingDriver) DriverManager  
    86.                     .getDriver("jdbc:apache:commons:dbcp:");  
    87.             driver.closePool(poolname);  
    88.         } catch (SQLException e) {  
    89.             e.printStackTrace();  
    90.         }  
    91.     }  
    92.   
    93.     /** 
    94.      * 取得连接池中的连接 
    95.      *  
    96.      * @return 
    97.      */  
    98.     public static Connection getConnection() {  
    99.         Connection conn = null;  
    100.         if (connectionPool == null)  
    101.             StartPool();  
    102.         try {  
    103.             conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:"  
    104.                     + poolname);  
    105.         } catch (SQLException e) {  
    106.             e.printStackTrace();  
    107.         }  
    108.         return conn;  
    109.     }  
    110.   
    111.     /** 
    112.      * 获取连接 getConnection 
    113.      *  
    114.      * @param name 
    115.      * @return 
    116.      */  
    117.     public static Connection getConnection(String name) {  
    118.         return getConnection();  
    119.     }  
    120.   
    121.     /** 
    122.      * 释放连接 freeConnection 
    123.      *  
    124.      * @param conn 
    125.      */  
    126.     public static void freeConnection(Connection conn) {  
    127.         if (conn != null) {  
    128.             try {  
    129.                 conn.close();  
    130.             } catch (SQLException e) {  
    131.                 e.printStackTrace();  
    132.             }  
    133.         }  
    134.     }  
    135.   
    136.     /** 
    137.      * 释放连接 freeConnection 
    138.      *  
    139.      * @param name 
    140.      * @param con 
    141.      */  
    142.     public static void freeConnection(String name, Connection con) {  
    143.         freeConnection(con);  
    144.     }  
    145.   
    146.     /** 
    147.      * 例子 main 
    148.      *  
    149.      * @param args 
    150.      */  
    151.     public static void main(String[] args) {  
    152.         try {  
    153.             Connection conn = PoolManager.getConnection();  
    154.             System.out.println(conn.isClosed());  
    155.             if (conn != null) {  
    156.                 Statement statement = conn.createStatement();  
    157.                 ResultSet rs = statement  
    158.                         .executeQuery("select * from test2..log");  
    159.                 int c = rs.getMetaData().getColumnCount();  
    160.                 while (rs.next()) {  
    161.                     System.out.println();  
    162.                     for (int i = 1; i <= c; i++) {  
    163.                         System.out.print(rs.getObject(i));  
    164.                     }  
    165.                 }  
    166.                 rs.close();  
    167.             }  
    168.             PoolManager.freeConnection(conn);  
    169.         } catch (SQLException e) {  
    170.             e.printStackTrace();  
    171.         }  
    172.   
    173.     }  
    174.   
    175. }  
  • 相关阅读:
    面向对象——多态
    面向对象——继承
    面向对象—封装
    数组
    控制语句
    认识Java
    出入境大厅流程
    2021上半年感想
    记录2020
    读后感《从三分钟热度到一万个小时》
  • 原文地址:https://www.cnblogs.com/zfswff/p/5006884.html
Copyright © 2020-2023  润新知