连接池dbcp

DBCP:apache组织

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。


使用步骤:
  1.导入jar包(commons-dbcp-1.4.jar和commons-pool-1.5.6.jar、commons-logging-1.2.jar)
  2.使用api


a.硬编码
  //创建连接池
  BasicDataSource ds = new BasicDataSource();

  //配置信息
  ds.setDriverClassName("com.mysql.jdbc.Driver");
  ds.setUrl("jdbc:mysql:///day07");
  ds.setUsername("root");
  ds.setPassword("1234");

代码展示:

  1.创建一个项目DataSourse,创建一个包com.dbcp.hjh

  2.在包下创建一个类DBCPTest1.java

  3.新建一个lib用来存放jar包(commons-dbcp-1.4.jar    commons-pool-1.5.6.jar   commons-logging-1.2.jar),导入后buildpat

 连接池dbcp 随笔 第1张

 

代码运行之前数据库数据如下:

连接池dbcp 随笔 第2张

 

java代码如下:

 JDBCUtil.java代码:

package com.util.hjh; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtil { final static String driver = "com.mysql.jdbc.Driver"; final static String url = "jdbc:mysql://localhost/hejh?useUnicode=true&characterEncoding=UTF-8"; final static String user  = "root"; final static String password = "root"; Connection conn = null; PreparedStatement ps = null; Statement st = null; ResultSet rs = null; /**获取连接*/
    public static Connection getConnection() throws SQLException { Connection conn = null; try { //注册驱动
 Class.forName(driver); //获取连接
            conn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } return conn; } /**关闭资源closeResourse(conn,st)*/
    public static void closeResourse(Connection conn,Statement st) { try { if(st!=null) { st.close(); }else { st = null; } } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null) { conn.close(); }else { conn = null; } } catch (SQLException e) { e.printStackTrace(); } } /**关闭资源closeResourse(conn,ps)*/
    public static void closeResourse(Connection conn,PreparedStatement ps) { try { if(ps!=null) { ps.close(); }else { ps = null; } } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null) { conn.close(); }else { conn = null; } } catch (SQLException e) { e.printStackTrace(); } } /**关闭资源closeResourse(rs)*/
    public static void closeResourse(ResultSet rs) { try { if(rs!=null) { rs.close(); }else { rs = null; } } catch (SQLException e) { e.printStackTrace(); }finally { } } }

 

DBCPTest1.java代码如下:

package com.dbcp.hjh; import java.sql.Connection; import java.sql.PreparedStatement;import org.apache.commons.dbcp2.BasicDataSource; import org.junit.Test; import com.util.hjh.JDBCUtil; public class DBCPTest1 { @Test public void test() throws Exception { //创建连接池
        BasicDataSource ds = new BasicDataSource(); //配置信息
        ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUrl("jdbc:mysql://localhost/jdbc"); ds.setUsername("root"); ds.setPassword("root"); //连接数据库操作
        Connection conn = ds.getConnection(); String sql = "insert into student values(?,?,?)"; PreparedStatement ps= conn.prepareStatement(sql); //设置参数
        ps.setInt(1, 10); ps.setString(2, "yz"); ps.setInt(3, 95); int i = ps.executeUpdate(); System.out.println("插入了"+i+"行数据"); //关闭资源
 JDBCUtil.closeResourse(conn, ps); } }

 

代码运行后数据库数据显示为:在jdbc数据库中student表,新增了一条id为10的数据

连接池dbcp 随笔 第3张

 

 


b.配置文件
  实现编写一个properties文件
  //存放配置文件
  Properties prop = new Properties();
  prop.load(new FileInputStream("src/dbcp.properties"));
  //设置
  //prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");

  //创建连接池
  DataSource ds = new BasicDataSourceFactory().createDataSource(prop);

 

代码介绍:

  1.创建一个项目DataSourse,创建一个包com.dbcp.hjh

  2.在包下创建一个类DBCPTest2.java

  3.新建一个lib用来存放jar包(commons-dbcp-1.4.jar    commons-pool-1.5.6.jar   commons-logging-1.2.jar),导入后buildpat

  4.新建一个配置文件dbcp.properties

连接池dbcp 随笔 第4张

 

 dbcp.properties内容:

driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost/jdbc
username=root password=root

 

 工具类JDBCUtil.java源码如下:

package com.util.hjh; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtil { final static String driver = "com.mysql.jdbc.Driver"; final static String url = "jdbc:mysql://localhost/hejh?useUnicode=true&characterEncoding=UTF-8"; final static String user  = "root"; final static String password = "root"; Connection conn = null; PreparedStatement ps = null; Statement st = null; ResultSet rs = null; /**获取连接*/
    public static Connection getConnection() throws SQLException { Connection conn = null; try { //注册驱动
 Class.forName(driver); //获取连接
            conn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } return conn; } /**关闭资源closeResourse(conn,st)*/
    public static void closeResourse(Connection conn,Statement st) { try { if(st!=null) { st.close(); }else { st = null; } } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null) { conn.close(); }else { conn = null; } } catch (SQLException e) { e.printStackTrace(); } } /**关闭资源closeResourse(conn,ps)*/
    public static void closeResourse(Connection conn,PreparedStatement ps) { try { if(ps!=null) { ps.close(); }else { ps = null; } } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null) { conn.close(); }else { conn = null; } } catch (SQLException e) { e.printStackTrace(); } } /**关闭资源closeResourse(rs)*/
    public static void closeResourse(ResultSet rs) { try { if(rs!=null) { rs.close(); }else { rs = null; } } catch (SQLException e) { e.printStackTrace(); }finally { } } }

 

DBCPTest2.java源码如下:

package com.dbcp.hjh; import java.io.FileInputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSourceFactory; import org.junit.Test; import com.util.hjh.JDBCUtil; public class DBCPTest2 { @Test public void test() throws Exception { //存放配置文件
        Properties pp = new Properties(); pp.load(new FileInputStream("src/dbcp.properties")); //创建连接池
        DataSource ds =   new BasicDataSourceFactory().createDataSource(pp); Connection conn = ds.getConnection(); String sql = "insert into student values(?,?,?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, 5); ps.setString(2, "zys"); ps.setInt(3, 88); int i = ps.executeUpdate(); System.out.println("插入了"+i+"条数据"); //释放资源
 JDBCUtil.closeResourse(conn, ps); } }

 

 数据库数据显示为:

连接池dbcp 随笔 第5张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄