连接池dbcp

连接池dbcp

DBCP:apache组织


使用步骤:
  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

 

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

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的数据


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.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);
    }
}

 数据库数据显示为:

原文地址:https://www.cnblogs.com/hejh/p/10869053.html