C3P0连接池工具类实现方法

    科技2024-10-21  17

    回顾Java中dao类的jdbc连接数据库方法

    加载数据库驱动,获取连接connection使用PreparedStatemen执行sql语句断开connection连接 这种连接数据库的方式浪费时间,代码执行效率不高。 这就是我们要学习连接池的目的了为数据库建立一个缓冲池,预先设置一定量的数据库连接,需要时,从中获取,用完扔回去,没有连接时,等待,请求数多于连接时,多余请求进入队列等待。

    C3P0连接池工具类实现步骤及方法

    导入jar包在成员变量位置创建一个静态的ComboPooledDtatesouce对象在静态代码块中使用ComboPooledDtatesouce对象setXXX方法设置数据库连接,定义一个静态的ComboPooledDtatesouce对象中获取数据库连接connection释放连接

    方法类

    package cn.sourceUntil; import com.mchange.v2.c3p0.ComboPooledDataSource; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /* C3P0连接池的工具类 使用C3P0获得连接对象 连接池有一个规范接口 javax.sal.DataSourse 接口 定义了一个从连接池中获得连接的方法 getConnection(); 步骤 0. 导入jar包 1. 在成员变量位置创建一个静态的ComboPooledDtatSource 对象 2. 在静态代码块中使用ComboPooledDtatSource 对象 setxxxx方法 设置数据库连接 3. 定义一个静态方法 ComboPooledDtatSource 对象中获得数据库连接 Coonection 4. 释放资源(归还); */ public class C3P0Utils { //1. 在成员变量位置创建一个静态的ComboPooledDtatSource 对象 private static ComboPooledDataSource dataSource=new ComboPooledDataSource(); //2. 在静态代码块中使用ComboPooledDtatSource 对象 setxxxx方法 设置数据库连接 static { try { //设置注册驱动程序 dataSource.setDriverClass("com.musql.jdbc.Dringver"); //设置URL dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/day05"); //设置数据库用户名 dataSource.setUser("root"); //设置数据库密码 dataSource.setPassword("root"); } catch (PropertyVetoException e) { e.printStackTrace(); } } //3. 定义一个静态方法 ComboPooledDtatSource 对象中获得数据库连接 Coonection public static Connection getConnection(){ try { return dataSource.getConnection(); } catch (SQLException e) { throw new RuntimeException("数据库连接失败"); } } //定义一个静态方法 可以返回连接池 public static ComboPooledDataSource getDatesource(){ return dataSource; } //4. 释放资源(归还); public static void close(ResultSet rs, Statement stat,Connection conn){ if (rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stat!=null){ try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn!=null){ try { conn.close();//不是关 是归还 } catch (SQLException e) { e.printStackTrace(); } } } }

    测试类

    package cn.cn.sourceTest; import cn.sourceUntil.C3P0Utils; import org.junit.Test; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestC3P0Until { @Test public void tes01() throws SQLException { //使用C3P0工具类 获得getConnection Connection conn = C3P0Utils.getConnection(); System.out.println(conn); Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery("SELECT * FROM users"); System.out.println("123456"); //遍历结果集 while (rs.next()){ System.out.println(rs.getInt("cid")+rs.getString("pname")+rs.getString("pasword")); } //释放资源 C3P0Utils.close(rs,stat,conn); } }

    C3P0Utils

    package cn.lijun.utils; import com.mchange.v2.c3p0.ComboPooledDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class C3P0Utils { private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); public static DataSource getDataSource(){ return dataSource; } public static Connection getConnection() throws SQLException{ return dataSource.getConnection(); } public static void close(ResultSet rs,Statement stat,Connection con){ if(rs!=null) try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } if(stat!=null) try{ stat.close(); }catch(Exception ex){} if(con!=null) try{ con.close(); }catch(Exception ex){} } }

    C3P0-config.xml

    <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/shoop</property> <property name="user">root</property> <property name="password">root</property> </default-config> </c3p0-config>

    忙活忙活又一天!!!! 昨夜雨疏风骤,今日卷帘人依旧, 哈哈哈哈哈哈!!!!

    Processed: 0.015, SQL: 8