zoukankan      html  css  js  c++  java
  • 三种连接池连接数据库

    package util;
    
    import java.beans.PropertyVetoException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    
    import javax.sql.DataSource;
    
    import org.apache.commons.dbcp2.BasicDataSource;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class DBUtil2 {
        //key,value都是String类型的map
        private static Properties p = new Properties();
        
        static {
            //通过当前线程获取一个类加载器,然后通过这个类加载器加载配置文件到流里面
            //默认以src为根路径
            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties");
            //properties通过加载流的方式进行初始化
            try {
                p.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        /**
         *  获取连接
         * @return
         * @throws PropertyVetoException 
         */
        public static Connection getConn() {
            try {
                //加载驱动
                Class.forName(p.getProperty("jdbc.driver"));
            } catch (ClassNotFoundException cnfe) {
                System.out.println("Error loading driver: " + cnfe);
            }
            Connection conn = null;
            try {
                //数据源是一个名为:DataSource的接口,我们要说的就是这个接口的三种实现方式
                /*
                 * 1.c3p0连接池创建数据源的方式
                 */
    //            ComboPooledDataSource cpds = new ComboPooledDataSource();//向上造型
    //            cpds.setDriverClass("oracle.jdbc.OracleDriver");
    //            cpds.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");
    //            cpds.setUser("scott");
    //            cpds.setPassword("Oracle11g");
    //            //cpds.setMaxPoolSize(5);
    //            conn = cpds.getConnection();
                
                /*
                 * 2.dbcp连接池创建数据源的方法
                 */
    //            BasicDataSource bds = new BasicDataSource();
    //            bds.setDriverClassName("oracle.jdbc.OracleDriver");
    //            bds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");
    //            bds.setUsername("scott");
    //            bds.setPassword("Oracle11g");
    //            conn = bds.getConnection();
                
                /*
                 * 3.druid连接池创建数据源的方法
                 */
                DruidDataSource dds = new DruidDataSource();
                dds.setDriverClassName("oracle.jdbc.OracleDriver");
                dds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");
                dds.setUsername("scott");
                dds.setPassword("Oracle11g");
                conn = dds.getConnection();
                
                //DriverManager工具类getConnection静态方法来获取连接Connection(代码已经和数据库建立起了连接)
    //            conn = DriverManager.getConnection(p.getProperty("jdbc.url"), p.getProperty("jdbc.username"), p.getProperty("jdbc.password"));
            } catch (SQLException e) {
                e.printStackTrace();
    //        } catch (PropertyVetoException e) {
    //            e.printStackTrace();
            }
            return conn;
        }
        /**
         * 鍏抽棴杩炴帴
         */
        public static void closeConn(Connection conn) {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    lintcode-453-将二叉树拆成链表
    qcow2虚拟磁盘映像转化为vmdk
    wiki
    oracle
    mysql配置记录
    consul命令记录
    Prometheus监控elasticsearch集群(以elasticsearch-6.4.2版本为例)
    centos7修改网卡名称为eth0
    linux下将普通用户加入到docker组,使它可以运行docker命令
    CentOS配置history记录每个用户执行过的命令
  • 原文地址:https://www.cnblogs.com/qilin20/p/12550582.html
Copyright © 2011-2022 走看看