C3p0连接池-Java(新手)

 

 

 1 1 数据库连接池 C3p0 和 Druid 
 2 
 3         1.1 定义 : 
 4 
 5             本质上就是个容器(集合)  存放数据库连接的容器 当系统初始化以后  容器被创建 容器中就会申请一些连接对象 当用户来访问的数据库的时候 从容器中取连接对象,用户用完之后 归还
 6 
 7         1.2  如何用:
 8 
 9           1.2.1 标准接口 Datasource  javax.sql包下
10 
11                      方法:getConnection();获得链接
12 
13                        Connection.close();归还
14 
15           1.2.2 一般我们不实现这个接口  数据库厂商或者连接池厂商来实现这个接口
16 
17           1.2.3 C3P0
18 
19         步骤:
20 
21             1  导包 两个包 c3p0-0.9.5.2.jar  mchange-commons-java-0.2.12
22 
23            2  定义配置文件 名称  c3p0.properties  c3p0-config.xml
24 
25                      路径:将文件放到src目录下
26 
27            3   创建核心对象 数据库连接池对象ComboPoolDataSource
28 
29            4   获取链接 getConnection

例1:


 

 1 package cn.Wuchuang.C3p0Druid;
 2 
 3 import com.mchange.v2.c3p0.ComboPooledDataSource;
 4 
 5 import javax.sql.DataSource;
 6 import java.sql.Connection;
 7 import java.sql.SQLException;
 8 
 9 public class Demo1C3P0 {
10     public static void main(String[] args) throws SQLException {
11 //        1 导包 两个包 c3p0-0.9.5.2.jar  mchange-commons-java-0.2.12
12 //        2 定义配置文件 名称
13 //          路径:将文件放到src目录下
14 //        3 创建核心对象 数据库连接池对象ComboPoolDataSource
15         DataSource ds = new ComboPooledDataSource();
16 //        4 获取链接 getConnection
17         Connection conn = ds.getConnection();
18         System.out.println(conn+"哈哈");
19     }
20 }

例2:


 

 1 package cn.Wuchuang.C3p0Druid;
 2 
 3 import com.mchange.v2.c3p0.ComboPooledDataSource;
 4 
 5 import javax.sql.DataSource;
 6 import java.sql.Connection;
 7 
 8 public class Demo2C3P0 {
 9     public static void main(String[] args) throws Exception {
10         DataSource data = new ComboPooledDataSource();
11 
12         for (int i =1;i<=11;i++){
13             Connection conn = data.getConnection();
14             System.out.println(i+"  "+conn);
15             if (i==5){
16                 //归还连接池。
17                 conn.close();
18             }
19         }
20     }
21 }

例3:


 

 1 package cn.Wuchuang.C3p0Druid;
 2 
 3 import com.alibaba.druid.pool.DruidDataSourceFactory;
 4 
 5 import javax.sql.DataSource;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 import java.sql.Connection;
 9 import java.util.Properties;
10 
11 public class Demo3Druid {
12     public static void main(String[] args) throws Exception {
13         //加载文件。
14         Properties pro = new Properties();
15         InputStream in = Demo3Druid.class.getClassLoader().getResourceAsStream("druid.properties");
16         pro.load(in);
17         //获得数据库连接池对象、
18         //通过DruidDataSourceFactory
19         DataSource dats = DruidDataSourceFactory.createDataSource(pro);
20         //获取链接。
21         Connection conn = dats.getConnection();
22         System.out.println(conn+"我被测试了");
23     }
24 }

例4:


 

 1 package cn.Wuchuang.C3p0Druid;
 2 
 3 import org.junit.Test;
 4 import org.springframework.jdbc.core.JdbcTemplate;
 5 import org.springframework.jdbc.support.JdbcUtils;
 6 
 7 import java.sql.Connection;
 8 import java.sql.PreparedStatement;
 9 import java.sql.SQLException;
10 
11 public class Demo4Druid {
12     @Test
13     public void Druids(){
14 
15             Connection conn = null;
16             PreparedStatement ppst = null;
17             try {
18                 //完成一个添加操作。
19                 //获得链接。
20                 conn = JDBCUtils.getConnection();
21                 //定义SQL语句。
22                 String sql =("insert into salarys values(7,?,?)");
23                 //获得执行的语句。
24                 ppst = conn.prepareStatement(sql);
25                 //给?赋值。
26                 ppst.setInt(1,610);
27                 ppst.setInt(2,800);
28                 //执行SQL语句。
29                 int i = ppst.executeUpdate();
30                 System.out.println(i);
31             } catch (Exception e) {
32                 e.printStackTrace();
33             }finally {
34                 JDBCUtils.close(conn,ppst);
35             }
36     }
37 }

JDBC工具类:


 

 1 package cn.Wuchuang.C3p0Druid;
 2 
 3 import javax.sql.DataSource;
 4 import java.sql.*;
 5 
 6 public class JDBCUtils {
 7     private static final String r = "root";
 8     private static final String p = "root";
 9     private static final String url = "jdbc:mysql:///semployee";
10     private static final String DRIVER = "com.mysql.jdbc.Driver";
11     //注册驱动。
12     static{
13         try {
14             Class.forName(DRIVER);
15         } catch (Exception e) {
16             e.printStackTrace();
17         }
18     }
19     //得到数据库链接。
20     public static Connection getConnection() throws Exception {
21         return DriverManager.getConnection(url,r,p);
22     }
23 
24     //关闭链接,执行打开的资源。
25     public static void close(Connection conn,Statement stmt){
26         if (stmt!=null){
27             try {
28                 stmt.close();
29             } catch (Exception e) {
30                 e.printStackTrace();
31             }
32         }
33         if (conn!=null){
34             try {
35                 conn.close();
36             } catch (Exception e) {
37                 e.printStackTrace();
38             }
39         }
40     }
41     //关闭所有打开的资源。
42     public static void close(Connection conn, Statement stmt, ResultSet rs){
43         if (stmt!=null){
44             try {
45                 stmt.close();
46             } catch (Exception e) {
47                 e.printStackTrace();
48             }
49         }if (conn!=null){
50             try {
51                 conn.close();
52             } catch (Exception e) {
53                 e.printStackTrace();
54             }
55         }
56         if (rs!=null){
57             try {
58                 rs.close();
59             } catch (Exception e) {
60                 e.printStackTrace();
61             }
62         }
63     }
64     }

 

posted @ 2019-04-03 20:53  浪子。  阅读(377)  评论(0编辑  收藏  举报