1:第一種方式非常簡單
c3p0.driverClass=com.mysql.jdbc.Driverc3p0.jdbcUrl=jdbc:mysql://localhost:3308/databasec3p0.user=rootc3p0.password=root
檔案名稱字為:c3p0.properties(放在src目錄下面)
//程式我寫的比較簡單,可以用來測試執行配置。
package jdbc.mysql;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3P0 {public static void main(String[] args) throws SQLException {//資料庫連接池預設會到classpath下去找資料庫的配置。ComboPooledDataSource data = new ComboPooledDataSource();Connection conn = data.getConnection();String sql = "select * from table";PreparedStatement pstmt = conn.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();while(rs.next()){System.out.println(rs.getString(1));}}}
2:第二種方式非常靈活好用,也非常接近於我們平時的hibernate和struts的設定檔方式
而且可以為多個資料來源提供服務,提供default-config和named-config兩種配置方式 。
其中裡面的具體參數可參照c3p0文檔(http://www.mchange.com/projects/c3p0/) 比較簡單。根據屬性名稱字幾乎可以看出意思。
<?xml version="1.0" encoding="UTF-8"?><c3p0-config> <default-config> <property name="user">root</property> <property name="password">1234</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/database?characterEncoding=UTF-8&useOldAliasMetadataBehavior=true</property> <property name="initialPoolSize">2</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">2</property> </default-config> <named-config name="database"> <property name="user">root</property> <property name="password">root</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3308/database?characterEncoding=UTF-8&useOldAliasMetadataBehavior=true</property> <property name="initialPoolSize">2</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">2</property> </named-config></c3p0-config>
package jdbc.mysql;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3p0JDBC {public static void main(String[] args) throws SQLException {System.setProperty("com.mchange.v2.c3p0.cfg.xml",System.getProperty("user.dir")+"/config/c3p0-config.xml");//上面的設定檔 <default-config> //預設情況下 建構函式傳空值。會去找預設配置DataSource data = new ComboPooledDataSource();//上面的設定檔 <named-config name="database">//如果建構函式中傳值,則找到對應的配置。DataSource data1 = new ComboPooledDataSource("database");Connection conn = data.getConnection();Connection conn1 = data1.getConnection();String sql = "select * from table";PreparedStatement pstmt = conn1.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();while(rs.next()){System.out.println(rs.getString(1));}}}
3:這種配置是最不常用的,比較繁瑣,就是把所有配置都寫到程式裡面來。
可選擇性使用
import com.mchange.v2.c3p0.*;........ComboPooledDataSource cpds = new ComboPooledDataSource();cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" );cpds.setUser("dbuser"); cpds.setPassword("dbpassword"); cpds.setMaxStatements( 180 ); cpds.close();