当前位置:网站首页>开源数据库连接池的使用及其工具类
开源数据库连接池的使用及其工具类
2022-07-29 15:03:00 【汤键.】
目录
C3P0数据库连接池的使用步骤
- 1.导入jar包
- 2.导入配置文件到src目录下
- 3.创建C3P0连接池对象
- 4.获取数据库连接进行使用
- 注意:
- C3P0的配置文件会自动加载,但是必须叫c3p0-config.xml或c3p0-config.properties
C3P0数据库连接池实例演示(包含配置信息)
- 具体url和数据库帐号密码需自行在配置文件中修改


<c3p0-config> <!-- 使用默认的配置读取连接池对象 --> <default-config> <!-- 连接参数 --> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/dp1</property> <property name="user">root</property> <property name="password">109923</property> <!-- 连接池参数 --> <!-- 初始连接数 --> <property name="initialPoolSize">5</property> <!-- 最大连接数 --> <property name="maxPoolSize">10</property> <!-- 最大等待时间 --> <property name="checkoutTimeout">3000</property> </default-config> <!-- 创建对象传参为otherc3p0时读取下面的配置信息 --> <named-config name="otherc3p0"> <!-- 连接参数 --> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/dp1</property> <property name="user">root</property> <property name="password">109923</property> <!-- 连接池参数 --> <property name="initialPoolSize">5</property> <property name="maxPoolSize">8</property> <property name="checkoutTimeout">1000</property> </named-config> </c3p0-config>package demo02.c3p0demo; import com.mchange.v2.c3p0.ComboPooledDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class c3p0Test1 { public static void main(String[] args) throws Exception{ //1.创建c3p0的数据库连接池对象 DataSource dataSource = new ComboPooledDataSource(); //2.通过连接池对象获取数据库连接 Connection con = dataSource.getConnection(); //3.查询学生表的全部信息 String sql = "SELECT * FROM student"; PreparedStatement pst = con.prepareStatement(sql); //4.执行sql语句,接收结果集 ResultSet rs = pst.executeQuery(); //5.处理结果集 while(rs.next()){ System.out.println(rs.getInt("sid")+"\t"+rs.getString("name")+"\t"+rs.getInt("age")+"\t"+rs.getDate("birthday")); } //6.释放资源 rs.close(); pst.close(); con.close();//用完以后,进行归还 } }Druid数据库连接池的使用步骤
- 1.导入jar包
- 2.编写配置文件,放到src目录下
- 3.通过Properties集合加载配置文件
- 4.通过Druid连接池工厂类获取数据库连接池对象
- 5.获取数据库连接进行使用
- 注意:
- Druid不会自动加载配置文件,需要我们手动加载,但是文件的名称可以自定义
Druid数据库连接池实例演示(包含配置信息)


driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/dp1 username=root password=109923 initialSize=5 maxActive=10 maxWait=3000package demo02.druiddemo; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Properties; public class druidTest { public static void main(String[] args) throws Exception{ //获取配置文件的流对象 InputStream is = druidTest.class.getClassLoader().getResourceAsStream("druid.properties"); //1.通过Properties集合加载配置文件 Properties prop = new Properties(); prop.load(is); //2.通过Druid连接池工厂类获取数据库连接池对象 DataSource dataSource = DruidDataSourceFactory.createDataSource(prop); //3.通过连接池对象获取数据库连接进行使用 Connection con = dataSource.getConnection(); //4.查询学生表的全部信息 String sql = "SELECT * FROM student"; PreparedStatement pst = con.prepareStatement(sql); //5.执行sql语句,接收结果集 ResultSet rs = pst.executeQuery(); //6.处理结果集 while(rs.next()){ System.out.println(rs.getInt("sid")+"\t"+rs.getString("name")+"\t"+rs.getInt("age")+"\t"+rs.getDate("birthday")); } //6.释放资源 rs.close(); pst.close(); con.close();//用完以后,进行归还 } }连接池的工具类



package demo02.utils; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class DataSourceUtils { //1.私有构造方法 private DataSourceUtils(){} //2.声明数据源变量 private static DataSource dataSource; //3.提供静态代码块,完成配置文件的加载 static{ try { //完成配置文件的加载 InputStream is = DataSourceUtils.class.getClassLoader().getResourceAsStream("druid.properties"); Properties prop = new Properties(); prop.load(is); //获取数据库连接池对象 dataSource = DruidDataSourceFactory.createDataSource(prop); } catch (Exception e) { e.printStackTrace(); } } //4.提供一个获取数据库连接的方法 public static Connection getConnection(){ Connection con = null; try { con = dataSource.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return con; } //5.提供一个获取数据库连接池对象的方法 public static DataSource getDataSource(){ return dataSource; } //6.释放资源 public static void close(Connection con, Statement stat, ResultSet rs) { if(con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stat != null) { try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } if(rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Connection con, Statement stat) { if(con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stat != null) { try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } } }package demo02.druiddemo; import demo02.utils.DataSourceUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class druidTest2 { public static void main(String[] args) throws Exception{ //1.通过连接池工具类获取一个数据库连接 Connection con = DataSourceUtils.getConnection(); //2.查询学生表的全部信息 String sql = "SELECT * FROM student"; PreparedStatement pst = con.prepareStatement(sql); //3.执行sql语句,接收结果集 ResultSet rs = pst.executeQuery(); //4.处理结果集 while(rs.next()){ System.out.println(rs.getInt("sid")+"\t"+rs.getString("name")+"\t"+rs.getInt("age")+"\t"+rs.getDate("birthday")); } //5.释放资源 DataSourceUtils.close(con,pst,rs); } }
边栏推荐
- Uni drop-down selection menu function/lazy loading images
- 【 LeetCode 】 88. Merging two orderly array
- Principles Of Mathematical Analysis, Third Edition免费下载地址
- 深度卷积生成对抗网络
- c语言之位域
- 协同多智能体学习的价值分解网络的原理与代码复现
- 又一位AI大佬辞职进体制内!AI的尽头是编制?
- 53 LeetCode 】 【. Most architectural array and
- Linux环境 redis完整配置及启动命令
- 用Asm生成Class字节码文件
猜你喜欢
随机推荐
QT通过UDP分包传输大图像(测试可传6M)
错误# 6633:实际的类型参数不同于空变量的类型。
Linux installation of MySQL (super detailed)
【LeetCode】88. 合并两个有序数组
File management: logical structure
企业级存储详解与存储资源盘活
See you in shenzhen!Cloud native to accelerate the application building special: see cloud native FinOps, SRE, high-performance computing scenario best practices
MySQL索引常见面试题(2022版)
NLP自然语言处理-机器学习和自然语言处理介绍(一)
大模型轻量化实践路径
Learning Policies for Adaptive Tracking with Deep Feature Cascades全文翻译
又一位AI大佬辞职进体制内!AI的尽头是编制?
广汽本田安全驾驶体验营,老司机的必修课
【7.22-7.29】写作社区精彩技术博文回顾
瑞萨RZ/G2L处理器详细测评
Jmeter实现多用户测试
NLP自然语言处理-机器学习和自然语言处理介绍(三)
极市直播丨严彬-Unicorn:走向目标跟踪的大一统(ECCV2022 Oral)
深圳见!云原生加速应用构建专场:来看云原生 FinOps、SRE、高性能计算场景最佳实践
PHP 读取/导出 CSV文件








![[MySQL] 运算符](/img/0b/e974cb461fc403de18545f7f9ac527.png)







