连接池之DBCP

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32048567/article/details/73756631
DBCP连接池是Apache 提供的 性能也不错
准备:
1):拷贝jar:commons-dbcp-1.4.jar  ,    commons-pool-1.5.6.jar
2):build path,添加到classpath路径.
3):阅读文档:commons-dbcp-1.3-src\doc\BasicDataSourceExample.java
dbcp.properties:
编写该文件:
key名必须等于BasicDataSource中的属性名(由setter方法决定).
----------------------------------------------------------------------
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///jdbcdemo
username=root
password=admin
maxActive=10
----------------------------------------------------------------------
----------------------工具类代码

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;
/***
 * DBCP 连接池工具类
 * @author mldn
 *
 */
public class MyDbcpUity {
    //配置文件
    private static Properties prod=new Properties();
    //连接池对象
    private static DataSource dataSource=null;
    static {
        //读取配置文件路径
        InputStream input=Thread.currentThread().getContextClassLoader().getResourceAsStream("dbcp.properties");
        
        try {
            //加载文件路径进内存
            prod.load(input);
            //通过BasicDataSourceFactory工厂模式进行创建连接池对象
            dataSource=BasicDataSourceFactory.createDataSource(prod);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //返回一个数据库的连接对象
    public static Connection  getConn(){
        try {
            //从连接池当中获取一个连接
            return dataSource.getConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
 }
}
------------------------------------------测试代码
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

import cn.heima.jdbc.DatabaseConnection;

public class MyDbcpTest2 {
    @Test
    public void finayAll() {
        //写一条sql语句
        String sql = "select * from exam";
        //三大执行官
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet result = null;
        try {
            //预执行
            conn = MyDbcpUity.getConn();
            prep=conn.prepareStatement(sql);
            result=prep.executeQuery();
            while(result.next()){
                System.out.println(result.getString("name")+" "+result.getDouble("english")+"  "+result.getDouble("chinese")+" "+result.getString("math"));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //释放资源
        finally{
            DatabaseConnection.Close(result, conn,prep);
        }
    }

}

猜你喜欢

转载自blog.csdn.net/qq_32048567/article/details/73756631