最简DBCP范例

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())会自动关闭超时的连接
         */
        
    }
}

posted @   WaterGe  阅读(180)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示