创建数据库连接池的两种方式

使用DBCP和CP30来创建数据库连接池的理解(在校大学生,如有不对的请指正)

首先为什么要用这个东西呢?首先在初期的时候我相信许多小伙伴也会像我一样是按照下列方式来连接数据库的(mysql)

// 主要功能就是连接数据库、关闭数据库
public class ConnectionBase
{
	private final String  DbDriver = "com.mysql.jdbc.Driver";//加载驱动程序,引号里面是驱动程序的地址
	private final String  URL = "jdbc:mysql://localhost:********";//数据库连接地址
	private final String  user = "****";  //数据库名称
	private final String  userPWD = "****";	//数据库密码
	private Connection conn = null ;
	

	public ConnectionBase(String URL){
		try
		{
			Class.forName(DbDriver) ;
			this.conn = DriverManager.getConnection(URL,user,userPWD) ;	
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public ConnectionBase()
	{
		try
		{
			Class.forName(DbDriver) ;
			this.conn = DriverManager.getConnection(URL,user,userPWD) ;	
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	
	
	// 取得数据库连接
	public Connection getConnection()
	{
		return this.conn ;
	}

	
	
	
	// 关闭数据库连接
	public void close()
	{
		try
		{
			this.conn.close() ;
		}
		catch (Exception e)
		{
		}		
	}	
};

这只是一个例子,如果用这种方式在后台每次都需要new出一个Connection的话,每一次访问数库都要频繁的建立连接,关闭连接,无疑是很消耗服务器的资源的,那么就需要造一个连接池,就不多BB了,下面开始:

DBCP创建数据库连接池

使用DBCP创建连接池所需要的jar包有两个:
commons-pool-1.5.6.jar
commons-dbcp-1.4.jar

  • 不使用配置文件的方式(一般不用)
public void testDBCP01(){
		
			
			Connection conn = null;
			PreparedStatement ps = null;
			try {
				
				//1. 构建数据源对象
				BasicDataSource dataSource = new BasicDataSource();
				//连的是什么类型的数据库, 访问的是哪个数据库 , 用户名, 密码。。
				//jdbc:mysql://localhost/bank 主协议:子协议 ://本地/数据库

				//此部分用了大量的set***方法,
				dataSource.setDriverClassName("com.mysql.jdbc.Driver");
				dataSource.setUrl("jdbc:mysql://localhost:端口/表名");
				dataSource.setUsername("root");
				dataSource.setPassword("root");
				
				
				//2. 得到连接对象
				conn = dataSource.getConnection();
				String sql = "insert into account values(null , ? , ?)";
				ps = conn.prepareStatement(sql);
				ps.setString(1, "admin");
				ps.setInt(2, 1000);
				
				ps.executeUpdate();
				
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				JDBCUtil.release(conn, ps);
			}
			
		}
  • 配置文件:dbcpconfig.properties
  • 下面是 dbcpconfig.properties这个文件的内容

#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/表
username=root
password=root

#
initialSize=10

#最大连接数量
maxActive=50

#
maxIdle=20

#
minIdle=5

#
maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:“user” 与 “password” 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=gbk

#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED

  • 使用配置文件的方式(常用)
Connection conn = null;
		PreparedStatement ps = null;
		try {
			BasicDataSourceFactory factory = new BasicDataSourceFactory();
			Properties properties = new Properties();
			//利用文件内容创建数据库连接池
			InputStream is = new FileInputStream("src//dbcpconfig.properties");
			properties.load(is);
			DataSource dataSource = factory.createDataSource(properties);
			
			//2. 得到连接对象
			conn = dataSource.getConnection();
			String sql = "insert into table values(null , ? , ?)";
			ps = conn.prepareStatement(sql);
			ps.setString(1, "Name");
			ps.setInt(2, 100);
			
			ps.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			JDBCUtil.release(conn, ps);
		}

CP30C创建数据库连接池

下次再说!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值