`
spacefly
  • 浏览: 277924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DBCP使用

    博客分类:
  • java
阅读更多

dbcp使用
--------------------
dbcp提供了数据库连接池;
可以在spring,iBatis,hibernate中调用dbcp完成数据库连接,框架一般都提供了dbcp连接的方法;
tomcat中也提供了dbcp的jndi设置方法;

也可以不在框架中使用dbcp,单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar

 

下面是个dbcp的实用类,通过它可以完成DBCP的使用:

package dbcp;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;

/**
 * @author space
 * @date Aug 12, 2008 3:25:49 PM
 *
 * dbcp 实用类,提供了dbcp连接,不允许继承;
 * 
 * 该类需要有个地方来初始化 DS ,通过调用initDS 方法来完成,可以在通过调用带参数的构造函数完成调用,可以在其它类中调用,也可以在本类中加一个static{}来完成;
 */
public final class DbcpBean {
	/** 数据源,static */
	private static DataSource DS;

	/** 从数据源获得一个连接 */
	public Connection getConn() {

		try {
			return DS.getConnection();
		} catch (SQLException e) {
			System.out.println("获得连接出错!");
			e.printStackTrace();
			return null;
		}
	}

	/** 默认的构造函数 */
	public DbcpBean() {
	}

	/** 构造函数,初始化了 DS ,指定 数据库 */
	public DbcpBean(String connectURI) {
		initDS(connectURI);
	}

	/** 构造函数,初始化了 DS ,指定 所有参数 */
	public DbcpBean(String connectURI, String username, String pswd, String driverClass, int initialSize,
			int maxActive, int maxIdle, int maxWait) {
		initDS(connectURI, username, pswd, driverClass, initialSize, maxActive, maxIdle, maxWait);
	}

	/**
	 * 创建数据源,除了数据库外,都使用硬编码默认参数;
	 * 
	 * @param connectURI 数据库
	 * @return
	 */
	public static void initDS(String connectURI) {
		initDS(connectURI, "root", "password", "com.mysql.jdbc.Driver", 5, 100, 30, 10000);
	}

	/** 
	 * 指定所有参数连接数据源
	 * 
	 * @param connectURI 数据库
	 * @param username 用户名
	 * @param pswd 密码
	 * @param driverClass 数据库连接驱动名
	 * @param initialSize 初始连接池连接个数
	 * @param maxActive 最大激活连接数
	 * @param maxIdle 最大闲置连接数
	 * @param maxWait 获得连接的最大等待毫秒数
	 * @return
	 */
	public static void initDS(String connectURI, String username, String pswd, String driverClass, int initialSize,
			int maxActive, int maxIdle, int maxWait) {
		BasicDataSource ds = new BasicDataSource();
		ds.setDriverClassName(driverClass);
		ds.setUsername(username);
		ds.setPassword(pswd);
		ds.setUrl(connectURI);
		ds.setInitialSize(initialSize); // 初始的连接数;
		ds.setMaxActive(maxActive);
		ds.setMaxIdle(maxIdle);
		ds.setMaxWait(maxWait);
		DS = ds;
	}

	/** 获得数据源连接状态 */
	public static Map<String, Integer> getDataSourceStats() throws SQLException {
		BasicDataSource bds = (BasicDataSource) DS;
		Map<String, Integer> map = new HashMap<String, Integer>(2);
		map.put("active_number", bds.getNumActive());
		map.put("idle_number", bds.getNumIdle());
		return map;
	}

	/** 关闭数据源 */
	protected static void shutdownDataSource() throws SQLException {
		BasicDataSource bds = (BasicDataSource) DS;
		bds.close();
	}

	public static void main(String[] args) {
		DbcpBean db = new DbcpBean("jdbc:mysql://localhost:3306/testit");

		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;

		try {
			conn = db.getConn();
			stmt = conn.createStatement();
			rs = stmt.executeQuery("select * from test limit 1 ");
			System.out.println("Results:");
			int numcols = rs.getMetaData().getColumnCount();
			while (rs.next()) {
				for (int i = 1; i <= numcols; i++) {
					System.out.print("\t" + rs.getString(i) + "\t");
				}
				System.out.println("");
			}
			System.out.println(getDataSourceStats());
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null)
					rs.close();
				if (stmt != null)
					stmt.close();
				if (conn != null)
					conn.close();
				if (db != null)
					shutdownDataSource();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

 

分享到:
评论
1 楼 yysm 2012-04-09  
[flash=200,200][/flash]

相关推荐

    Mycat最权威DBCP使用手册2

    《Mycat DBCP 使用手册详解》 Mycat 是一款开源的分布式数据库中间件,主要用于处理大数据处理和MySQL集群。在Mycat中,DBCP(Database Connection Pool)作为连接池管理工具,扮演着关键角色,它能有效地管理和...

    DBCP使用的包.zip

    DBCP通过维护一个连接池,可以在应用程序需要时快速提供已建立的数据库连接,用完后则将连接返回到池中,供其他线程重复使用,从而显著提高了数据库操作的效率。DBCP是Apache Commons项目的一部分,与Apache的其他...

    DBCP三个使用jar包

    它提供了一套对象池化的API,DBCP使用这个库来管理数据库连接的生命周期,包括创建、分配、回收和销毁。PoolableConnection是DBCP中的一个关键类,它实现了池化连接的逻辑,与PoolableConnectionFactory配合工作,...

    dbcp连接池所使用的jar和案例

    - `commons-collections-3.2.1.jar`:这是Apache Commons Collections库,提供了各种集合操作的工具类,DBCP使用它来辅助管理和维护连接池。 - `commons-dbcp-1.4.jar`:这是DBCP的主要库文件,包含了DBCP连接池的...

    DBCP配置所需jar包(合)

    - `commons-pool.jar`:这个库是Apache Commons的通用对象池,DBCP使用它来实现数据库连接的池化管理。对象池允许你复用已经创建的对象,避免频繁地创建和销毁对象带来的性能损失。 2. **配置文件**: DBCP的配置...

    commons-dbcp-1.2.2 JAR包和API

    2. **连接工厂**:DBCP使用`PoolableConnectionFactory`来创建和管理池化的数据库连接。这个类负责将数据库的物理连接转换为池化的连接,同时提供了连接的验证和回收机制。 3. **池化对象**:`PoolableConnection`...

    jdbc与dbcp数据库连接

    **DBCP使用步骤** 1. **引入依赖**:在项目中添加DBCP的jar包依赖。 2. **配置连接池**:通过XML或Java代码设置DBCP的配置属性,如数据库URL、用户名、密码、最大/最小连接数等。 3. **初始化连接池**:创建...

    commons-dbcp-1.3

    - **GenericObjectPool**:一个通用的对象池,DBCP使用它来存储和管理PoolableConnection对象。 3. **配置DBCP**: 在使用DBCP之前,需要配置相关参数,如最大活跃连接数、最小空闲连接数、超时时间等。这通常...

    dbcp连接池小例子

    本示例将简要介绍DBCP连接池的使用方法,以及如何将其集成到Java应用中。 首先,我们需要在项目中引入DBCP的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;commons-dbcp ...

    commons-dbcp

    3. **Apache Commons Pool**:DBCP使用Commons Pool来实现连接对象的池化,确保高效的资源分配和回收。 4. **Apache Commons Collections**:这个库提供了一些高级数据结构和算法,如双向映射、集合排序、集合转换...

    DBCP需要的jar包

    DBCP使用它来实现数据库连接的池化管理,通过对象池技术有效地复用数据库连接,提高系统的效率和稳定性。 在实际使用过程中,还需要根据所使用的数据库类型,将对应的JDBC驱动JAR包添加到类路径中。例如,如果你的...

    dbcp-1.2.2 jar包和源码

    - `ObjectPool`: 对象池接口,DBCP使用它来管理连接对象,例如C3P0或Commons Pool提供的实现。 3. **DBCP的配置与使用** - 配置文件:通常在应用的配置文件(如`web.xml`)中配置`BasicDataSource`的相关属性,如...

    DBCP需要的4个JAR包

    - **commons-pool.jar**:这是Apache Commons Pool库,提供了对象池化的支持,DBCP使用它来管理数据库连接。 - **commons-logging.jar**:Apache Commons Logging库,提供日志服务的抽象层,使得DBCP可以灵活地...

    dbcp 1.4 jar 和 源码

    - `ObjectPool`:接口,表示对象池,DBCP使用它来存储和管理数据库连接。 - `AbandonedConfig`:配置类,用于处理废弃连接的检测和清除策略。 3. **配置DBCP** - 在XML配置文件中,你可以设置各种属性,如最大...

    Apache DBCP

    - Commons-Pool.jar:提供了对象池化的基础框架,DBCP使用它来实现连接池的底层逻辑。 在使用DBCP时,开发者需要在Java代码中配置DBCP的连接池属性,如数据库URL、用户名、密码、最大连接数、最小连接数等,并通过...

    dbcp.rar_Commons-jdbc.zip jar_DBCP_commons jdbc_dbcp jar_dbcp.ja

    Apache Commons JDBC是一个集合,包含了多个小型的、独立的、与JDBC相关的工具和实用程序,虽然在描述中没有明确提及,但它可能是DBCP使用的补充库。 在压缩包子文件的文件名称列表中,我们看到"www.pudn.com.txt"...

    DBCP jar包

    DBCP使用C3P0或Apache Commons Pool库来实现对象池的具体逻辑。 5. **AbandonedConfig** 和 **AbandonedObjectPool**: 这两个类用于处理"废弃"的连接。当连接长时间未使用时,可以设置自动回收机制,防止资源浪费和...

    DBCP数据源JAR包

    Apache Commons Pool是对象池化的实现库,DBCP使用它来管理数据库连接池。这个库提供了基础的池化服务,如对象的创建、回收和检测是否有效等。在DBCP中,它负责维护数据库连接的池,确保在需要时可以快速获取连接,...

    JavaEE DBCP简单案例

    JavaEE DBCP简单案例

Global site tag (gtag.js) - Google Analytics