• 开源数据库连接池的使用及其工具类


    • 目录

      C3P0数据库连接池的使用步骤

      C3P0数据库连接池实例演示(包含配置信息)

      Druid数据库连接池的使用步骤

      Druid数据库连接池实例演示(包含配置信息)

      连接池的工具类


    • C3P0数据库连接池的使用步骤

    • 1.导入jar包
    • 2.导入配置文件到src目录下
    • 3.创建C3P0连接池对象
    • 4.获取数据库连接进行使用
    • 注意:
    • C3P0的配置文件会自动加载,但是必须叫c3p0-config.xml或c3p0-config.properties
    • C3P0数据库连接池实例演示(包含配置信息)

    • 具体url和数据库帐号密码需自行在配置文件中修改
      1. <c3p0-config>
      2. <default-config>
      3. <property name="driverClass">com.mysql.cj.jdbc.Driverproperty>
      4. <property name="jdbcUrl">jdbc:mysql://localhost:3306/dp1property>
      5. <property name="user">rootproperty>
      6. <property name="password">109923property>
      7. <property name="initialPoolSize">5property>
      8. <property name="maxPoolSize">10property>
      9. <property name="checkoutTimeout">3000property>
      10. default-config>
      11. <named-config name="otherc3p0">
      12. <property name="driverClass">com.mysql.cj.jdbc.Driverproperty>
      13. <property name="jdbcUrl">jdbc:mysql://localhost:3306/dp1property>
      14. <property name="user">rootproperty>
      15. <property name="password">109923property>
      16. <property name="initialPoolSize">5property>
      17. <property name="maxPoolSize">8property>
      18. <property name="checkoutTimeout">1000property>
      19. named-config>
      20. c3p0-config>
      1. package demo02.c3p0demo;
      2. import com.mchange.v2.c3p0.ComboPooledDataSource;
      3. import javax.sql.DataSource;
      4. import java.sql.Connection;
      5. import java.sql.PreparedStatement;
      6. import java.sql.ResultSet;
      7. public class c3p0Test1 {
      8. public static void main(String[] args) throws Exception{
      9. //1.创建c3p0的数据库连接池对象
      10. DataSource dataSource = new ComboPooledDataSource();
      11. //2.通过连接池对象获取数据库连接
      12. Connection con = dataSource.getConnection();
      13. //3.查询学生表的全部信息
      14. String sql = "SELECT * FROM student";
      15. PreparedStatement pst = con.prepareStatement(sql);
      16. //4.执行sql语句,接收结果集
      17. ResultSet rs = pst.executeQuery();
      18. //5.处理结果集
      19. while(rs.next()){
      20. System.out.println(rs.getInt("sid")+"\t"+rs.getString("name")+"\t"+rs.getInt("age")+"\t"+rs.getDate("birthday"));
      21. }
      22. //6.释放资源
      23. rs.close();
      24. pst.close();
      25. con.close();//用完以后,进行归还
      26. }
      27. }
    • Druid数据库连接池的使用步骤

    • 1.导入jar包
    • 2.编写配置文件,放到src目录下
    • 3.通过Properties集合加载配置文件
    • 4.通过Druid连接池工厂类获取数据库连接池对象
    • 5.获取数据库连接进行使用
    • 注意:
    • Druid不会自动加载配置文件,需要我们手动加载,但是文件的名称可以自定义
    • Druid数据库连接池实例演示(包含配置信息)

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

      1. package demo02.utils;
      2. import com.alibaba.druid.pool.DruidDataSourceFactory;
      3. import javax.sql.DataSource;
      4. import java.io.InputStream;
      5. import java.sql.Connection;
      6. import java.sql.ResultSet;
      7. import java.sql.SQLException;
      8. import java.sql.Statement;
      9. import java.util.Properties;
      10. public class DataSourceUtils {
      11. //1.私有构造方法
      12. private DataSourceUtils(){}
      13. //2.声明数据源变量
      14. private static DataSource dataSource;
      15. //3.提供静态代码块,完成配置文件的加载
      16. static{
      17. try {
      18. //完成配置文件的加载
      19. InputStream is = DataSourceUtils.class.getClassLoader().getResourceAsStream("druid.properties");
      20. Properties prop = new Properties();
      21. prop.load(is);
      22. //获取数据库连接池对象
      23. dataSource = DruidDataSourceFactory.createDataSource(prop);
      24. } catch (Exception e) {
      25. e.printStackTrace();
      26. }
      27. }
      28. //4.提供一个获取数据库连接的方法
      29. public static Connection getConnection(){
      30. Connection con = null;
      31. try {
      32. con = dataSource.getConnection();
      33. } catch (SQLException e) {
      34. e.printStackTrace();
      35. }
      36. return con;
      37. }
      38. //5.提供一个获取数据库连接池对象的方法
      39. public static DataSource getDataSource(){
      40. return dataSource;
      41. }
      42. //6.释放资源
      43. public static void close(Connection con, Statement stat, ResultSet rs) {
      44. if(con != null) {
      45. try {
      46. con.close();
      47. } catch (SQLException e) {
      48. e.printStackTrace();
      49. }
      50. }
      51. if(stat != null) {
      52. try {
      53. stat.close();
      54. } catch (SQLException e) {
      55. e.printStackTrace();
      56. }
      57. }
      58. if(rs != null) {
      59. try {
      60. rs.close();
      61. } catch (SQLException e) {
      62. e.printStackTrace();
      63. }
      64. }
      65. }
      66. public static void close(Connection con, Statement stat) {
      67. if(con != null) {
      68. try {
      69. con.close();
      70. } catch (SQLException e) {
      71. e.printStackTrace();
      72. }
      73. }
      74. if(stat != null) {
      75. try {
      76. stat.close();
      77. } catch (SQLException e) {
      78. e.printStackTrace();
      79. }
      80. }
      81. }
      82. }
      1. package demo02.druiddemo;
      2. import demo02.utils.DataSourceUtils;
      3. import java.sql.Connection;
      4. import java.sql.PreparedStatement;
      5. import java.sql.ResultSet;
      6. public class druidTest2 {
      7. public static void main(String[] args) throws Exception{
      8. //1.通过连接池工具类获取一个数据库连接
      9. Connection con = DataSourceUtils.getConnection();
      10. //2.查询学生表的全部信息
      11. String sql = "SELECT * FROM student";
      12. PreparedStatement pst = con.prepareStatement(sql);
      13. //3.执行sql语句,接收结果集
      14. ResultSet rs = pst.executeQuery();
      15. //4.处理结果集
      16. while(rs.next()){
      17. System.out.println(rs.getInt("sid")+"\t"+rs.getString("name")+"\t"+rs.getInt("age")+"\t"+rs.getDate("birthday"));
      18. }
      19. //5.释放资源
      20. DataSourceUtils.close(con,pst,rs);
      21. }
      22. }
  • 相关阅读:
    数据可视化项目基础知识
    Redis 缓存雪崩、穿透、击穿
    AUTODL云服务器使用大致步骤(适合本人版)
    十五、异常(5)
    在 BSV 上基于 Zokrates 的 zkSNARKs 应用开发流程简介
    2022年运动品牌推荐,双十一运动装备推荐
    V2X应用 汇总
    L44.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- su和visudo
    LLaMA参数微调方法
    Python 中的方法重载
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/126049723