package dbcptest;
import java.sql.Connection;
import java.sql.Statement;
import org.apache.commons.dbcp2.BasicDataSource;
/**
* 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日
*
*/
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://数据库地址:3306/dbcptest?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai");
bds.setUsername("root");
bds.setPassword("数据库密码");
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())会自动关闭超时的连接
*/
}
}
转载于:https://www.cnblogs.com/WaterGe/p/11072456.html