先看官网给的范例:
import java.sql.*; import javax.naming.*; import javax.sql.DataSource; import com.mchange.v2.c3p0.DataSources; /** * This example shows how to acquire a c3p0 DataSource and * bind it to a JNDI name service. */ public final class JndiBindDataSource { // be sure to load your database driver class, either via // Class.forName() [as shown below] or externally (e.g. by // using -Djdbc.drivers when starting your JVM). static { try { Class.forName( "com.mysql.jdbc.Driver" ); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] argv) { try { // let a command line arg specify the name we will // bind our DataSource to. String jndiName = argv[0]; // acquire the DataSource using default pool params... // this is the only c3p0 specific code here DataSource unpooled = DataSources.unpooledDataSource("jdbc:mysql://127.0.0.1:3306/gpsdata", "root", "root"); DataSource pooled = DataSources.pooledDataSource( unpooled ); // Create an InitialContext, and bind the DataSource to it in // the usual way. // // We are using the no-arg version of InitialContext's constructor, // therefore, the jndi environment must be first set via a jndi.properties // file, System properties, or by some other means. InitialContext ctx = new InitialContext(); ctx.rebind( jndiName, pooled ); System.out.println("DataSource bound to nameservice under the name \"" + jndiName + '\"'); } catch (Exception e) { e.printStackTrace(); } } static void attemptClose(ResultSet o) { try { if (o != null) o.close();} catch (Exception e) { e.printStackTrace();} } static void attemptClose(Statement o) { try { if (o != null) o.close();} catch (Exception e) { e.printStackTrace();} } static void attemptClose(Connection o) { try { if (o != null) o.close();} catch (Exception e) { e.printStackTrace();} } private JndiBindDataSource() {} }
1.建立 com.mchange.v2.c3p0.ComboPooledDataSource
这是一个JavaBean,在使用前应设置它的jdbcURL、user、password和driverClass。其他参数参考configuration properties
也可以使用命名Configuration
2.使用工厂类com.mchange.v2.c3p0.DataSources
com.mchange.v2.c3p0.DataSources 可以按照传统的JDBC驱动建立一个无连接池的DataSource,然后转化为连接池的DataSource。
如果想设置其中的参数,可以将参数放入一个Map中
如果使用命名的Configuration,可以如下
销毁DataSource有两种方式
DataSource.destroy()方式
另一种是PooledDataSource 接口提供的close() 方法