DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar,配置文件 db.properties 如下:

1
2
3
4
5
6
7
8
driverClassName=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
username=system
password=254615
initialSize=10
maxActive=50
minIdle=5
maxWait=60000

Properties文件 是以键值对形式存放数据,一个键对应且只对应一个值,键与值都不能有空格
DBCP连接池如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
mport java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtil {

private static DataSource dataSource;

static {
//在类加载时, 读取配置文件, 配置连接池
//1. 创建Properites对象
Properties ppt = new Properties();
//2. 读取配置文件,
InputStream is = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcp.properties");
//3. 将配置文件 加载到Properties对象中
try {
ppt.load(is);
//4. 通过连接池工厂类, 创建连接池
dataSource = BasicDataSourceFactory.createDataSource(ppt);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 用于从连接池中 获取一个连接对象
* @return 连接对象 , 如果获取失败返回null
*/
public static Connection getConnection() {
try {
return dataSource.getConnection();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 用于释放资源
* @param conn 连接对象
* @param state 执行环境
* @param result 结果集
*/
public static void close(Connection conn , Statement state ,ResultSet result) {
if(result!=null) {
try {
result.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(state!=null) {
try {
state.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}




}

Druid连接池如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DruidUtil {

private static DataSource dataSource;
static {
InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("db.properties");
Properties pro = new Properties();
try {
pro.load(is);
dataSource = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}

public static Connection getConnection(){

try {
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}

public static void sourceCloes(Connection conn, Statement st, ResultSet rs){

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

建议使用Druid连接池,因为Druid是最大最好的连接池 而且它是阿里出品哦 - ( ゜- ゜)つロ



11月      Java

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!