zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    导入excel
    aspx页面调用发送邮件验证码(结合前两篇)
    随机生成数字(ashx文件,调用上篇所写发送邮件代码)
    C#邮箱发送验证码
    linq查询一个字段的总和
    随部分div增高总的div也随着增高
    视图显示库存余量
    利用存储过程把两个表的数据插入到一个新表中(存储过程中写两个游标)
    使用kindeditor文本编辑器
    MSSQLServer 2016 安装遇到的问题
  • 原文地址:https://www.cnblogs.com/lxr521/p/10651454.html
Copyright © 2011-2022 走看看