`

JDBC + MySQL使用c3p0连接池

阅读更多
    由于前面在使用JDBC + MySQL出现了tool many connections错误!
    下面是JDBC + MySQL使用c3p0连接池的解决方案
   
public class DBUtils {
	
	private static String url = null;
	
	private static String username = null;
	
	private static String pwd = null;
	
	private static DataSource ds_pooled;
	/** 
	 *  加载数据库连接的配置文件和驱动
	 */
	static{
		FileInputStream fis = null;
		
		Properties env = new Properties();
		try {
			fis = new FileInputStream("dbconfig.properties");
			//加载属性文件中的数据库配置信息
			//以=左边作为key值,右边作为value值
			env.load(fis); 
			
			//1. 加载驱动类
			Class.forName(env.getProperty("jdbc.driver"));
			
			url = env.getProperty("jdbc.url");
			username = env.getProperty("jdbc.username");
			pwd = env.getProperty("jdbc.pwd");
			
			//设置连接数据库的配置信息
			DataSource ds_unpooled = DataSources
					.unpooledDataSource(url, username, pwd);
			
			Map<String, Object> pool_conf = new HashMap<String, Object>();
			//设置最大连接数
			pool_conf.put("maxPoolSize", 10);
			ds_pooled = DataSources.pooledDataSource(ds_unpooled,
					pool_conf);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 *  获取连接对象
	 */
	public static Connection getConnection() throws SQLException {
		// 2. 设置连接的url,username,pwd
//		return DriverManager.getConnection(url, username, pwd);
		return ds_pooled.getConnection();
	}
	
	/**
	 * 释放连接池资源
	 */
	public static void clearup(){
		if(ds_pooled != null){
			try {
				DataSources.destroy(ds_pooled);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	
	/**
	 * 资源关闭
	 * 
	 * @param rs
	 * @param stmt
	 * @param conn
	 */
	public static void close(ResultSet rs, Statement stmt
			, Connection conn) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}


下面为测试代码:
public class TestMySQLConnection {
	private static Integer counter = 0;

	public static void main(String[] args){
		for (int i = 1; i <= 20; i++) {
			new Thread(new Runnable() {
				public void run() {
					Connection conn = null;
					try {
						conn = DBUtils.getConnection();
						synchronized (counter) {
							System.out.print(Thread.currentThread().getName());
							System.out.print("    counter = " + counter++
									+ "  conn = " + conn);
							System.out.println();
							
							conn.prepareStatement("select * from t_user");
							
							conn.close();
						}
					} catch (SQLException e) {
						e.printStackTrace();
					}  
				}
			}).start();
		}
	}
}
分享到:
评论

相关推荐

    补丁MySQL+JDBC+DBUtil+c3p0史上最全数据库讲义.rar

    学习“补丁MySQL+JDBC+DBUtil+c3p0史上最全数据库讲义”这个资料,你将深入理解如何在Java应用中设置和使用数据库连接池,如何通过JDBC与MySQL交互,以及如何利用DBUtil简化数据库操作。这将有助于你成为一名更熟练...

    C3P0连接池配置需要的jar包

    C3P0连接池是Java应用中常用的数据库连接池组件,它允许程序在不关闭物理连接的情况下,管理和重用数据库连接,从而提高了应用程序的性能和效率。C3P0库依赖于其他几个JAR包来实现其功能,包括`c3p0-0.9.2.1.jar`、`...

    JSP+Servlet+JDBC+c3p0网上商城完整项目

    4. **数据访问层**:使用JDBC和c3p0连接池进行数据库操作,执行SQL语句,如增删改查。 5. **配置文件**:如`web.xml`(Web应用部署描述符)、`c3p0-config.xml`(c3p0连接池配置),设置应用的初始化参数和数据库...

    JDBC连接池使用工具 C3P0 连接池 and druid-1.0.9

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要特点包括: 1. **连接测试**:C3P0提供了多种测试策略,确保获取到的连接是可用的。 2. **连接池初始化和最大...

    spring + c3p0 连接池

    本示例将深入探讨如何在Spring项目中配置并使用C3P0连接池,以实现高效、稳定的数据库连接管理。 **一、Spring框架简介** Spring是一个开源的Java平台,它简化了企业级应用的开发。Spring的核心特性包括依赖注入...

    tomcat6+jndi+c3p0配置数据库连接池

    首先,C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了对JDBC3规范和JDBC2的标准扩展的支持。使用C3P0能够有效地管理和重用数据库连接,避免频繁创建和销毁连接导致的性能损耗。 在Tomcat6中配置C3P...

    c3p0连接池jar包

    4. 连接池扩展性:C3P0支持多种数据库驱动,如MySQL、Oracle、PostgreSQL等,只需提供对应的JDBC驱动即可使用。 5. 配置灵活性:C3P0提供大量的可配置参数,用户可以根据实际需求调整,例如初始化连接数、最大连接...

    c3p0连接池工具

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0的主要功能是管理数据库连接,提高数据库访问效率,避免因为频繁创建和销毁数据库连接而造成大量的系统资源浪费。在高...

    C3P0连接池配置

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要特点是轻量级、高效且稳定,广泛应用于各种Java Web应用中。在本文中,我们将深入探讨C3P0连接池的配置,以便更...

    c3p0连接池使用所需jar包

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,尤其是在Web应用中,使用数据库连接池可以有效地管理和控制数据库连接,提高系统的性能和效率。下面...

    java登录、注册案例(servlet+mysql+tomcat8+C3P0Pool).doc

    Java登录和注册系统是Web应用开发中的基础模块,本案例主要使用了Servlet、MySQL数据库、Tomcat8服务器以及C3P0连接池进行实现。以下将详细解释这些关键组件及其在系统中的作用。 1. **数据库设计**: 数据库采用...

    c3p0连接池配置使用

    **c3p0连接池配置使用** c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。使用c3p0连接池可以有效地管理和优化数据库连接,提高系统的性能和稳定性。下面将详细介绍c3p0的...

    c3p0连接池

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0由Miquel Delgado开发,其核心功能在于提高了数据库连接的效率和管理,通过池化数据库连接来减少创建和销毁连接的开销...

    c3p0连接池连接数据库实例

    C3P0是由Mysql AB的开发成员David SYZEN开发的一个开源连接池组件,支持JDBC 3.0和JDBC 4.0规范。 在使用C3P0连接池前,我们需要在项目中引入C3P0的jar包。根据提供的文件名"**c3p0连接池连接数据实例和jar包**",...

    c3p0连接池以及配置文件

    C3P0是由Maurice Priess创建的一个开源项目,它旨在提供一个健壮、完全免费的JDBC连接池实现,以解决数据库连接管理的问题,提升系统的性能和稳定性。 ### C3P0基本概念 1. **数据库连接池**:数据库连接池在初始...

    c3p0连接池所需要jar包.zip

    C3P0连接池是Java应用中常用的数据库连接池组件,它允许程序管理数据库连接,以提高数据库操作的效率和性能。C3P0库主要包含以下组件:`com.mchange.v2.c3p0.ComboPooledDataSource`,这是核心的数据源类,负责创建...

    c3p0连接池jar

    C3P0是一个开源的Java连接池,全称为Comming Soon Connection Pool,它提供了一种在JDBC数据库连接上的管理机制,以提高应用程序的性能和效率。C3P0是基于JDBC的数据源实现,允许应用程序通过配置参数来优化数据库...

    C3P0连接池jar包,mysql-connector-java-5.1.37,druid连接池jar包,commons-dbu

    本文将详细介绍三个重要的组件:C3P0连接池、MySQL的JDBC驱动(mysql-connector-java-5.1.37)以及Druid连接池,以及它们在Java中的应用和作用。 首先,C3P0是一个开源的JDBC连接池,全称为ComMchange V2 C3P0。它...

Global site tag (gtag.js) - Google Analytics