您的位置:首页 > 产品设计 > UI/UE

数据库连接池 DBCP、C3P0、Druid 连接代码

2017-04-07 16:03 351 查看
在使用数据库连接池之前首先加驱动jar包,或者pom.xml里加

            <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>

数据库连接池DBCP:

使用之前需要添加相关的jar包,我使用的是commons-dbcp-1.4.jar,或者在pom.xml里添加

              <dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>

Java代码连接:

public class DBCP {
private static Connection conn;
private static DataSource ds;

static{
Properties pro=new Properties();
InputStream is=DBCP.class.getClassLoader().getResourceAsStream("dbcp.ini");

try {
pro.load(is);
ds=BasicDataSourceFactory.createDataSource(pro);
 
} catch ( Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnection(){
try {
conn=ds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;

}
public static void main(String[] args) {
System.out.println(new DBCP().getConnection());
}

}

dbcp.ini配置文件是连接的基本内容:内容如下

#连接设置

driverClassName=org.gjt.mm.mysql.Driver

url=jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=UTF-8

username=root

password=root

#<!-- 初始化连接 -->

initialSize=10

#最大连接数量

maxActive=50

#<!-- 最大空闲连接 -->

maxIdle=20

#<!-- 最小空闲连接 -->

minIdle=5

#<!-- 超时等待时间以毫秒为单位 60000毫秒/1000等于60秒 -->

maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] 

#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。

connectionProperties=useUnicode=true;characterEncoding=utf-8

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

defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的只读(read-only)状态。

#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)

defaultReadOnly=

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。

 

数据库连接池C3P0:

使用之前需要添加相关的jar包,或者在pom.xml里添加

<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5-pre8</version>
</dependency>

public class C3P0DB {
private static Connection conn;
private static ComboPooledDataSource ds;    
static{

ds=new ComboPooledDataSource("mysql");
}
public static Connection getConnection(){
try {
conn=ds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;

}
public static void main(String[] args) {
System.out.print(C3P0DB.getConnection());
}

}
c3p0配置文档:

<?xml version="1.0" encoding="UTF-8"?>

<c3p0-config>
<default-config>
<property name="automaticTestTable">con_test</property>

<property name="checkoutTimeout">30000</property>

<property name="idleConnectionTestPeriod">30</property>

<property name="initialPoolSize">10</property>

<property name="maxIdleTime">30</property>

<property name="maxPoolSize">100</property>

<property name="minPoolSize">10</property>

<property name="maxStatements">200</property>

</default-config>

<named-config name="mysql">

<property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=utf-8
</property>

<property name="user">root</property> 

<property name="password">root</property>

<property name="acquireIncrement">5</property>

<property name="initialPoolSize">10</property>

<property name="minPoolSize">5</property>

<property name="maxPoolSize">30</property>

</named-config>

</c3p0-config>

数据库连接池Druid(阿里):

使用之前需要添加相关的jar包,或者在pom.xml里添加

       <dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.14</version>
</dependency>

public class DruidDB {
private static Connection conn;
private static DataSource ds;
static{
Properties pro=new Properties();
InputStream is=DruidDB.class.getClassLoader().getResourceAsStream("druid.ini");

try {
pro.load(is);
ds=DruidDataSourceFactory.createDataSource(pro);
} catch ( Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public static Connection getConnection(){
try {
conn=ds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}

public static void main(String[] args) {
System.out.print(new DruidDB().getConnection());
}

}

druid.ini配置文档:

#mysql数据库

url=jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=UTF-8

username=root

password=root

#filters=stat

#最大连接数量

maxActive=20

#初始化连接数量

initialSize=10

#超时等待时间以毫秒为单位

maxWait=12000

#最小空闲连接

minIdle=5

#校验连接池中限制时间超过minEvictableIdleTimeMillis的连接对象

timeBetweenEvictionRunsMillis=6000

#连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒

#minEvictableIdleTimeMillis=

#SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前

validationQuery=SELECT now();

#指明连接是否被空闲连接回收器(如果有)进行检验.

#如果检测失败,则连接将被从池中去除.

testWhileIdle=true

#指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.

testOnBorrow=false

#指明是否在归还到池中前进行检验

testOnReturn=false

#poolPreparedStatements=true

#maxPoolPreparedStatementPerConnectionSize=20
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息