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
|
package
C3P0;
import
java.sql.Connection;
import
java.sql.SQLException;
import
java.beans.PropertyVetoException;
import
com.mchange.v2.c3p0.ComboPooledDataSource;
public
class
DBPool{
private
static
DBPool dbPool;
private
ComboPooledDataSource dataSource;
static
{
dbPool =
new
DBPool();
}
public
DBPool(){
try
{
dataSource =
new
ComboPooledDataSource();
dataSource.setUser(
"id"
);
dataSource.setPassword(
"pw"
);
dataSource.setJdbcUrl("jdbc:mysql:
//127.0.0.1:3306/test?
autoReconnect=
true
&useUnicode=
true
&characterEncoding=GB2312");
dataSource.setDriverClass(
"com.mysql.jdbc.Driver"
);
dataSource.setInitialPoolSize(
2
);
dataSource.setMinPoolSize(
1
);
dataSource.setMaxPoolSize(
10
);
dataSource.setMaxStatements(
50
);
dataSource.setMaxIdleTime(
60
);
}
catch
(PropertyVetoException e) {
throw
new
RuntimeException(e);
}
}
public
final
static
DBPool getInstance(){
return
dbPool;
}
public
final
Connection getConnection(){
try
{
return
dataSource.getConnection();
}
catch
(SQLException e) {
throw
new
RuntimeException(
"无法从数据源获取连接"
,e);
}
}
public
static
void
main(String[] args)
throws
SQLException {
Connection con =
null
;
try
{
con = DBPool.getInstance().getConnection();
}
catch
(Exception e){
}
finally
{
if
(con !=
null
)
con.close();
}
}
}
|
方法二:
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
|
c3p0方法:
配置文件:c3p0-config.xml
连接数据库:
package
cn.langzi.jdbc.c3p0;
import
java.sql.Connection;
import
java.sql.ResultSet;
import
java.sql.SQLException;
import
java.sql.Statement;
import
javax.sql.DataSource;
import
com.mchange.v2.c3p0.ComboPooledDataSource;
public
class
DbConnection {
private
static
DataSource dataSource;
static
{
dataSource =
new
ComboPooledDataSource(
"userApp"
);
}
public
static
Connection getConnectioon()
throws
SQLException{
return
dataSource.getConnection();
}
}
|
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
|
public
final
class
ConnectionManager {
private
static
ConnectionManager instance;
public
ComboPooledDataSource ds;
private
static
String c3p0Properties =
"c3p0.properties"
;
private
ConnectionManager()
throws
Exception {
Properties p =
new
Properties();
p.load(
this
.getClass().getResourceAsStream(c3p0Properties));
ds =
new
ComboPooledDataSource();
ds.setUser(p.getProperty(
"user"
));
ds.setPassword(p.getProperty(
"user"
));
ds.setJdbcUrl(p.getProperty(
"user"
));
ds.setDriverClass(p.getProperty(
"user"
));
ds.setInitialPoolSize(Integer.parseInt(p.getProperty(
"initialPoolSize"
)));
ds.setMinPoolSize(Integer.parseInt(p.getProperty(
"minPoolSize"
)));
ds.setMaxPoolSize(Integer.parseInt(p.getProperty(
"maxPoolSize"
)));
ds.setMaxStatements(Integer.parseInt(p.getProperty(
"maxStatements"
)));
ds.setMaxIdleTime(Integer.parseInt(p.getProperty(
"maxIdleTime"
)));
}
public
static
final
ConnectionManager getInstance() {
if
(instance ==
null
) {
try
{
instance =
new
ConnectionManager();
}
catch
(Exception e) {
e.printStackTrace();
}
}
return
instance;
}
public
synchronized
final
Connection getConnection() {
try
{
return
ds.getConnection();
}
catch
(SQLException e) {
e.printStackTrace();
}
return
null
;
}
protected
void
finalize()
throws
Throwable {
DataSources.destroy(ds);
// 关闭datasource
super
.finalize();
}
}
|