2011-04-22 44 views
10

Tôi đang sử dụng c3p0 - ComboPooledDataSource. Tôi đang khởi tạo một lần như dưới đây.cách trả lại kết nối trong c3p0

private void init() { 
cpds = new ComboPooledDataSource(); 
cpds.setDriverClass(driverName); 
cpds.setJdbcUrl(url); 
cpds.setUser(userName); 
cpds.setPassword(pwd); 
} 

Tôi nhận được một kết nối từ hồ bơi như sau

public synchronized Connection getLocalConnection(String ipAddr) 
    throws SQLException { 
return cpds.getConnection(); 
} 

Nhưng tôi không chắc chắn liệu một cách đúng đắn của nó để trả lại kết nối trở lại hồ bơi khi tôi kết thúc thực hiện một truy vấn. Tôi đoán số điện thoại

conn.close() 

chỉ trả lại kết nối về hồ bơi thay vì REALLY KẾT THÚC kết nối. Tôi có đúng hay có cách nào khác không? Xin giúp đỡ.

Trả lời

6

này được khởi tạo đang

private DataSource init() { 

    DataSource unpooled = DataSources.unpooledDataSource(DB_URL, DB_USERNAME, DB_PASSWORD); 

    Map<String, Object> overrideProps = new HashMap<String, Object>(); 

    overrideProps.put("maxPoolSize", MAX_POOL_SIZE); 
    overrideProps.put("minPoolSize", MIN_POOL_SIZE); 

    return DataSources.pooledDataSource(unpooled, overrideProps); 
} 

Và bạn sẽ có được kết nối từ DataSource.

public Connection getConnection() throws SQLException { 
    return dataSource.getConnection(); 
} 

Và để đóng kết nối, chỉ cần gọi phương thức close().

connection.close(); 
Các vấn đề liên quan