开发者社区> 涂作权> 正文

03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池

简介:  DBCP数据源 使用DBCP数据源,需要导入两个jar包 Commons-dbcp.jar:连接池的实现 Common-pool.jar:连接池实现的依赖库。   导入mysql的jar包。   DBCP核心API BasciDataSource   它可以通过实例化对象的方式获得一个对象。 它里面有如下方法: se
+关注继续查看


DBCP数据源

使用DBCP数据源,需要导入两个jar

Commons-dbcp.jar:连接池的实现

Common-pool.jar:连接池实现的依赖库。

 

导入mysqljar包。

 

DBCP核心API

BasciDataSource   它可以通过实例化对象的方式获得一个对象。

它里面有如下方法:

setDriverClassName(String driverClassName) 设置驱动类的名称。

setInitialSize(int initialSize) 设置初始化时的链接数目。

setMaxActive(int maxIdle) 设置最大的并发访问数量。

setMaxIdle(int maxIdle): 设置最大的闲置数目。

setPassword:用于设置密码。

setUrl:设置url

setUsername:设置用户名。

 

 

数据源实现BasicDataSourceFactory   用于创建数据源的工厂类,

 

不设配置文件时使用BasicDataSource的程序的写法:

package cn.toto.utils;

 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.sql.DataSource;

 

import org.apache.commons.dbcp.BasicDataSource;

 

public class JdbcUtils {

    private JdbcUtils(){}

    //定义BasicDataSource的父类接口的形式,获得ds的参数。

    private static DataSource ds;

   

    static {

           //要想使用写好的数据源的功能,得先初始化一个dbcp连接池

           BasicDataSource bds = new BasicDataSource();

          

           //设置一系列参数

           bds.setDriverClassName("com.mysql.jdbc.Driver");

           bds.setUrl("jdbc:mysql://localhost:3306/day14");

           bds.setUsername("root");

           bds.setPassword("123456");

          

           //设置初始化大小

           bds.setInitialSize(5); //初始时设置5个连接数

           bds.setMaxActive(20);//设置并发访问数目。

           //bds.setMaxWait(0);//设置最大等待时间。不等待。

          

           ds = bds;  //获得数据是通过父接口的DataSource接口。

    }

    //获得连接池

    public static DataSource getDataSource(){

       return ds;

    }

 

   

    //获得与指定数据库的连接

    public static Connection getConnection() throws SQLException{

       //从连接池返回一个连接  

       return ds.getConnection();

    }

   

    public static void release(ResultSet rs,Statement stmt,Connection conn){

       if(rs!=null) {

           try{

              rs.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           rs = null;

       }

       if(stmt!=null){

           try{

              stmt.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           stmt = null;

       }

       if(conn!= null) {

           try{

              conn.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           conn = null;

       }

    }

}

 

用于验证的主函数的写法:

package cn.toto.demo;

 

import java.sql.Connection;

import java.sql.SQLException;

 

import cn.toto.utils.JdbcUtils;

 

public class Demo {

 

    public static void main(String[] args) throws SQLException {

      

       for(int i=0;i<30;i++){

           Connection conn = JdbcUtils.getConnection();//如果只写这句,程序将一直等待执行。

           System.out.println(conn);//不写下面一句时,打印输出,验证是否有20条,结果是20

          

           conn.close();//用一个放回一个,加上这一句之后将出现30条数据。

       }

    }

 

}

 

在文档中还有一个方法:

org.apache.commons.dbcp
Class BasicDataSourceFactory
它里面有一个这样的方法:

createDataSource(Properties properties)
          Creates andconfigures a
BasicDataSourceinstance based on the given properties.

它是根据Properties,根据properties中的信息获得信息。

配置dbcp的配置文件的方法是:找到文档中的Configuration,里面有多个属性。

src下面编写一个一个配置文件config.properties

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/day14

username=root

password=123456

initialSize=5

maxiActive=20

 

通过配置文件的方式获得的数据源的源码是:

package cn.toto.utils;

 

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

 

import javax.sql.DataSource;

 

import org.apache.commons.dbcp.BasicDataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

 

public class JdbcUtils {

    private JdbcUtils() {

    }

 

    // 定义BasicDataSource的父类接口的形式,获得ds的参数。

    private static DataSource ds;

 

    static {

       try {

           InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream(

                  "config.properties");//通过类加载的方式获得获得配置文件的流

           Properties prop = new Properties();

           prop.load(in);//通过流将配置项加载进来。

           //通过工厂类读取

           ds = BasicDataSourceFactory.createDataSource(prop);

       } catch (Exception e) {

           throw new ExceptionInInitializerError();

       }

    }

 

    // 获得连接池

    public static DataSource getDataSource() {

       return ds;

    }

 

    // 获得与指定数据库的连接

    public static Connection getConnection() throws SQLException {

       // 从连接池返回一个连接

       return ds.getConnection();

    }

 

    public static void release(ResultSet rs, Statement stmt, Connection conn) {

       if (rs != null) {

           try {

              rs.close();

           } catch (SQLException e) {

              e.printStackTrace();

           }

           rs = null;

       }

       if (stmt != null) {

           try {

              stmt.close();

           } catch (SQLException e) {

              e.printStackTrace();

           }

           stmt = null;

       }

       if (conn != null) {

           try {

              conn.close();

           } catch (SQLException e) {

              e.printStackTrace();

           }

           conn = null;

       }

    }

}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
在ArcGIS中如何使用直连方式连接Oracle数据库
1.      背景 直连方式比使用SDE方式更加稳定,特别是在大数据量处理的应用中,不易出场由SDE连接进程造成的gsvr错误。
1124 0
MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较
Hadoop 获得了许多大数据应用的信誉,但实际情况是,NoSQL数据库是一直处于更加广泛部署和更广泛的发展中的技术。尽管选择 Hadoop 作为应用存储,相对来说更直接简单。但是,具体采用什么样的 NoSQL 数据库是个值得思考的问题,毕竟,还有超过100种的 NoSQL 数据库。
1426 0
Android Studio 通过一个登录功能介绍SQLite数据库的使用
前言:         SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
4301 0
MySQL---数据库从入门走向大神系列(十四)-ComboPooledDataSource(C3P0连接池配置)
需要准备的jar包: MySQL的jar包mysql-connector-java-5.1.39-bin目前是5.1.39版本: http://dev.mysql.com/downloads/connector/j/ C3p0的2个包: https://sourceforge.
1246 0
MySQL---数据库从入门走向大神系列(十三)-BasicDataSource创建DataSource(DBCP连接池配置)
DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
962 0
Select Top在不同数据库中的使用
1. oracle数据库 SELECT * FROM TABLE1 WHERE ROWNUM
715 0
+关注
涂作权
java,架构,编程语言相关专家
1234
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载