javaweb mysql 连接池 c3p0 配置_JavaWeb--------数据库连接池c3p0

1.为什么要有数据库连接池?

首先我们来看看传统两个连接数据库的方法

方法一:直接在main方法里连接数据库 也是最简单的连接(使用的时候注意导入msql驱动包),然后执行查询 获得名字和年龄性别

conn=DriverManager.getConnection("jdbc:mysql://localhost/study1?seUnicode=true&characterEncoding=UTF-8","root","root");

System.out.println(conn.getClass());

stmt = conn.prepareStatement("select * from t_person");

resultSet = stmt.executeQuery();

while(resultSet.next())

{

String name = resultSet.getString("Name");

int age=resultSet.getInt("Age");

boolean gender = resultSet.getBoolean("Gender");

System.out.println("名字:"+name+"年龄"+age+"性别"+(gender?"男":"女"));

}

方法二:通过封装JDBCGB把数据库的连接放到常用类中,并通过静态类来加载 只加载一次

public class JDBCGB

{

private static final String drivername;

private static final String dburl;

private static final String dbusername;

private static final String dbpassword;

static

{

InputStream instream=null;

try{

instream = JDBCGB.class.getResourceAsStream("config.pro");

Properties prop = new Properties();

prop.load(instream);

drivername=prop.getProperty("drivername");

dburl=prop.getProperty("dburl");

dbusername=prop.getProperty("dbusername");

dbpassword = prop.getProperty("dbpassword");

}

catch(IOException ex)

{

throw new RuntimeException("config",ex);

}

finally

{

if(instream!=null)

{

try

{

instream.close();

}catch(IOException e)

{

}

}

}

try

{

Class.forName(drivername);

}

catch (ClassNotFoundException e)

{

throw new RuntimeException("mysql jdbc",e);

}

}

相关配置文件放到src下面

config.pro

drivername=com.mysql.jdbc.Driver

dburl=jdbc:mysql://localhost/study1?seUnicode=true&&characterEcoding=UTF8

dbusername=root

dbpassword=root

当我们每次打开数据库系统的时候会进行许多工作,如安全验证,内存回收分配,连接断开等,当我们使用传统的方式操作数据库时,

频繁的连接会导致数据库的性能降低,因此数据库连接池就出现了。如c3p0

2.怎么去使用c3p0数据库?

首先要导入c3p0数据库的驱动包,有

c3p0-0.9.5.jar

mchange-commons-java-0.2.9.jar

mysql-connector-java-5.1.7-bin.jar

然后写好C3p0的配置文件到src目录下,这样第一步就完成了

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/dataSourceDemo?characterEncoding=UTF8

root

root

15

3

3

3

600

0

package dataSourceDemo;

import java.sql.Connection;

import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class Test {

public void main(String args[])

{

//datasource这个接口的实现类 combopool

DataSource dataSource= new ComboPooledDataSource();

//这样就创建了数据库的对象,它会自动的加载数据库的配置文件

try {

Connection conn=dataSource.getConnection();

//做你需要做的事情

/*

*

*/

//归还连接给连接池

conn.close();

}

catch (SQLException e) {

e.printStackTrace();

}//获得数据库的连接

}

数据库连接池的原理,特点

程序启动时 连接池就会创建若干连接并且保存到连接池内

当用户需要的时候,就直接从连接池给出

当用户使用完毕后,就把链接还给连接池

如果超过连接池的最大连接,就会等待用户归还,否则创建。

可以在配置文件xml中配置连接池的连接数,等待时间等。

下面是常用的配置参数

maxPoolSize连接池的最大连接数目

minPoolSize最小连接数目

initialPoolSize初始化连接数目

maxIdleTime最大等待时间 超过就销毁连接池

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值