C3p0数据库连接池的创建方法

方法一:


?
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
   "1.0" encoding= "UTF-8" ?>
"userApp" >
"driverClass" >com.mysql.jdbc.Driver
"jdbcUrl" >jdbc:mysql: //localhost:3306/test
"user" >root
"password" > 123456
"acquireIncrement" > 5
"initialPoolSize" > 10
"minPoolSize" > 10
"maxPoolSize" > 20
"maxStatements" > 0
"maxStatementsPerConnection" > 5
"master-of-the-universe" >
"acquireIncrement" > 1
"initialPoolSize" > 1
"minPoolSize" > 1
"maxPoolSize" > 5
"maxStatementsPerConnection" > 50
连接数据库:
   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();
  }
}

你可能感兴趣的:(数据库)