最简DBCP范例

package dbcptest;
/**
 * DBCP数据库连接池(提升效率)
 * 导包dbcp
 * 创建数据库连接池:
 * 1 创建数据源对象(BasicDataSource)
 * 2 设置连接信息
 *         setDriverClassName()数据库驱动
 *         setUrl()数据库地址及库
 *         setUsername()数据库用户名
 *         setPassword()数据库密码
 *         setInitialSize()连接池初始连接数量
 *         setMaxActive()连接池最大连接数量
 *         setMaxWait()设置最大等待时间(超时的连接会被数据库连接池自动回收)
 *         注意:新版本中
 *         setMaxActive 替换成了 setMaxTotal
 *         setMaxWait 替换成了 setMaxWaitMillis
 * 3 获取连接对象
 * 4 操作连接对象
 *
 * Title: DBCPDemo
 *
 * Description: 
 *
 * @author Ethan
 *
 * @date 2019年6月23日
 *
 */

import java.sql.Connection;
import java.sql.Statement;

import org.apache.commons.dbcp2.BasicDataSource;

public class DBCPDemo {
    public static void main(String[] args) throws Exception {
        
        //1 创建数据源对象
        BasicDataSource bds = new BasicDataSource();
        
        //2 设置连接信息
        bds.setDriverClassName("com.mysql.cj.jdbc.Driver");
        bds.setUrl("jdbc:mysql://104.156.238.17:3306/dbcptest?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai");
        bds.setUsername("root");
        bds.setPassword("P1ng@n151008");
        bds.setInitialSize(3);
        bds.setMaxTotal(5);
        bds.setMaxWaitMillis(3000);
        
        //获取连接对象
        Connection conn = bds.getConnection();
        System.out.println(conn);
        
        //操作连接对象
        /**
         * 如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
         * 即:
         * 如果返回结果是一个ResultSet 对象则返回true
         * 如果返回值不是一个ResultSet 对象则返回false
         */
        Statement stat = conn.createStatement();
        String sql = "drop table dbcpt1";
        boolean restat = stat.execute(sql);
        System.out.println(restat);//此处返回false是正常的
        sql = "create table dbcpt1(id int primary key auto_increment,name varchar(20))";
        restat = stat.execute(sql);
        System.out.println(restat);//此处返回false是正常的
        
        /**
         * 使用dbcp不需要关闭连接,数据库连接池会自动根据情况选择关闭空闲连接
         * 设置setMaxWait()(setMaxWaitMillis())会自动关闭超时的连接
         */
        
    }
}

猜你喜欢

转载自www.cnblogs.com/WaterGe/p/11072456.html