• JDBC连接池(数据源)


    自定义连接池:用装饰设计模式将原连接的close方法改造成将连接还回数据源;装饰设计模式:http://www.cnblogs.com/tongxuping/p/6832518.html;

    开源数据库连接池:

      C3P0连接池:

        基本步骤:

        1.导入开发包
               2.创建数据库连接池
              ComboPooledDataSource cpds = new ComboPooledDataSource();
               3.配置基本的连接信息
                   a) 通过setters方法来设置参数
                   b) 通过c3p0-config.xml文件来配置基本连接信息
                   c) 通过c3p0.properties文件来配置基本连接信息

    示例代码:

     1 package Pool;
     2 
     3 
     4 import java.sql.Connection;
     5 import java.sql.PreparedStatement;
     6 
     7 import JDBCutils.JDBCutils;
     8 
     9 import com.mchange.v2.c3p0.ComboPooledDataSource;
    10 
    11 /*
    12  * c3p0 是个开源是数据源
    13  * c3p0被称为数据库链接池,用来管理数据库链接的获取和存储。
    14  * 有两种写法:
    15  *     方式一:在创建对象后直接设置JDBC的基本信息,如:数据库驱动,数据库url,登陆数据库用户名和密码;然后再对数据库操作
    16  *     方式二:外建一个xml或者properties配置文件,存在配置文件时无需对数据库基本信息进行设置。直接获取数据库连接,对数据库相应的操作
    17  */
    18 public class C3P0 {
    19     public static void main(String[] args) {
    20         
    21         Connection conn = null;
    22         PreparedStatement ps=null;
    23         //通过ComboPooledDataSource获取dateSource即数据源,可从中获取数据库的链接。
    24         ComboPooledDataSource pool = new ComboPooledDataSource();
    25         //ComboPooledDataSource pool = new ComboPooledDataSource("config1");
    26         /*
    27          * 传参表示需要使用config1的配置信息为数据库操作信息
    28          */
    29         try {
    30             /*pool.setDriverClass("com.mysql.jdbc.Driver");
    31             pool.setJdbcUrl("jdbc:mysql:///mydb5");
    32             pool.setUser("root");
    33             pool.setPassword("admin");*/
    34             
    35             conn = pool.getConnection();
    36             String sql="delete from tb_batch where id>?";
    37             ps = conn.prepareStatement(sql);
    38             ps.setInt(1, 20);
    39             int rows = ps.executeUpdate();
    40             System.out.println(rows);
    41             
    42             
    43             
    44         } catch (Exception e) {
    45             e.printStackTrace();
    46         }finally{
    47             JDBCutils.closeResou(conn, ps, null);
    48         }
    49     }
    50 }

    XML配置:XML文件名必须为:c3p0-config.xml,否则都不到配置信息;name不能随意写。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <c3p0-config>
     3     <default-config>
     4         <!-- setting -->
     5         <!-- c3p0默认读取这块 -->
     6         <property name="driverClass">com.mysql.jdbc.Driver</property>
     7         <property name="jdbcUrl">jdbc:mysql:///mydb5</property>
     8         <property name="user">root</property>
     9         <property name="password">admin</property>
    10     </default-config>
    11 
    12 
    13     <named-config name="config1"> 
    14         <!--  -->
    15         <property name="driverClass">com.mysql.jdbc.Driver</property>
    16         <property name="jdbcUrl">jdbc:mysql:///mydb1</property>
    17         <property name="user">admin</property>
    18         <property name="password">123</property>
    19     </named-config>
    20 </c3p0-config>

    Properties配置:

    1 c3p0.driverClass=com.mysql.jdbc.Driver
    2 c3p0.jdbcUrl=jdbc:mysql:///mydb1
    3 c3p0.user=root
    4 c3p0.password=root
  • 相关阅读:
    A. Dawid and Bags of Candies ( Codeforces Round #588 (Div. 2) )
    B. Ania and Minimizing (Codeforces Round #588 (Div. 2) )
    残缺的棋盘 (BFS)
    Max Sum (动态规划)
    高桥和低桥 (离散化 )
    White Sheet (矩形面积模板) (Codeforces Round #587 (Div. 3) )
    Catch That Cow (BFS luo搜 + 剪枝)
    Python笔记-字符串
    关于拖延症
    一些告诫
  • 原文地址:https://www.cnblogs.com/tongxuping/p/6880370.html
Copyright © 2020-2023  润新知