zoukankan      html  css  js  c++  java
  • 使用c3p0连接池

    首先我们需要知道为什么要使用连接池:因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉,每次新建连接都需要140毫秒左右的时间而C3P0连接池会池化连接,随时取用,平均每次取用只需要10-20毫秒,所以如果是很多客户端并发随机访问数据库的话,使用连接池的效率会高。
    接下来我们看使用c3p0需要做那些准备:首先需要导入相对应的jar包:c3p0-0.9.1.2-jdk1.3.jar,然后就是链接数据库的配置文件:c3p0-config.xml,配置如下

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <c3p0-config>  
     3     <!-- This is default config! -->  
     4     <default-config>  
     5         <property name="initialPoolSize">10</property>  
     6         <property name="maxIdleTime">30</property>  
     7         <property name="maxPoolSize">100</property>  
     8         <property name="minPoolSize">10</property>  
     9         <property name="maxStatements">200</property>  
    10     </default-config>  
    11   
    12     <!-- This is my config for mysql-->  
    13     <named-config name="mysql">  
    14           <!--   加载驱动 -->
    15         <property name="driverClass">com.mysql.jdbc.Driver</property> 
    16        <!--  其中studio为数据库名称  -->
    17         <property name="jdbcUrl">jdbc:mysql://localhost:3306/studio?useUnicode=true&amp;characterEncoding=UTF8</property>  
    18       <!--  连接用户名 -->
    19         <property name="user">root</property> 
    20        <!--  连接密码  -->
    21         <property name="password"></property>  
    22         <property name="initialPoolSize">10</property>  
    23         <property name="maxIdleTime">30</property>  
    24         <property name="maxPoolSize">100</property>  
    25         <property name="minPoolSize">10</property>  
    26         <property name="maxStatements">200</property>  
    27     </named-config>  
    28 </c3p0-config> 

    接下来是c3p0链接数据库的工具类,调用此类之后我们就无需再手动关闭连接,代码如下

     1 import java.sql.Connection;  
     2 import java.sql.PreparedStatement;  
     3 import java.sql.ResultSet;  
     4 import java.sql.SQLException;    
     5   
     6 import com.mchange.v2.c3p0.ComboPooledDataSource;  
     7 public class C3P0Util {  
     8     static ComboPooledDataSource cpds=null;  
     9     static{   
    10         cpds = new ComboPooledDataSource("mysql");//这是mysql数据库  
    11     }  
    12     /** 
    13      * 获得数据库连接  
    14      */  
    15     public static Connection getConnection(){  
    16         try {  
    17             return cpds.getConnection();  
    18         } catch (SQLException e) {  
    19             e.printStackTrace();  
    20             return null;  
    21         }  
    22     }  
    23       
    24     /** 
    25      * 数据库关闭操作 
    26      */  
    27     public static void close(Connection conn,PreparedStatement pst,ResultSet rs){  
    28         if(rs!=null){  
    29             try {  
    30                 rs.close();  
    31             } catch (SQLException e) {  
    32                 e.printStackTrace();  
    33             }  
    34         }  
    35         if(pst!=null){  
    36             try {  
    37                 pst.close();  
    38             } catch (SQLException e) {  
    39                 e.printStackTrace();  
    40             }  
    41         }  
    42   
    43         if(conn!=null){  
    44             try {  
    45                 conn.close();  
    46             } catch (SQLException e) {  
    47                 e.printStackTrace();  
    48             }  
    49         }  
    50     }  
    51 } 

    最后我们只需要在自己写的Dao层操作中获取到C3p0的连接就好了,这里我就只写一个查询的方法

    public List<String> getSelect() {
    // sql语句
    String sql = "select * from user";
    // 获取到连接
    Connection conn = C3P0Util.getConnection();
    PreparedStatement pst = null;
    // 定义一个list用于接受数据库查询到的内容
    List<String> list = new ArrayList<String>();
    try {
    pst = (PreparedStatement) conn.prepareStatement(sql);
    ResultSet rs = pst.executeQuery();
    while (rs.next()) {
    // 将查询出的内容添加到list中,其中userName为数据库中的字段名称
    list.add(rs.getString("userName"));
    }
    } catch (Exception e) {
    }
    return list;
    }

     

    主要是第5行中获取链接的方式改变了,当然我们既然链接数据库就需要导入相对应的jar包,小伙伴可以自行百度

  • 相关阅读:
    Python爬虫入门教程 45-100 Charles抓取兔儿故事-下载小猪佩奇故事-手机APP爬虫部分
    Python爬虫入门教程 44-100 Charles的安装与使用-手机APP爬虫部分
    Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分
    Python爬虫入门教程 43-100 百思不得姐APP数据-手机APP爬虫部分
    Python爬虫入门教程 41-100 Fiddler+夜神模拟器+雷电模拟器配置手机APP爬虫部分
    Python爬虫入门教程 40-100 博客园Python相关40W博客抓取 scrapy
    Python爬虫入门教程 39-100 天津市科技计划项目成果库数据抓取 scrapy
    Python爬虫入门教程 38-100 教育部高校名单数据爬虫 scrapy
    Python爬虫入门教程 37-100 云沃客项目外包网数据爬虫 scrapy
    Python爬虫入门教程 36-100 酷安网全站应用爬虫 scrapy
  • 原文地址:https://www.cnblogs.com/xwlych/p/5999426.html
Copyright © 2011-2022 走看看