package com.silence.database; import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.dbcp.BasicDataSource; import org.junit.Test; public class Test1 { @Test public void testDBCP() throws SQLException{ //創建數據庫連接池 final BasicDataSource dataSource = new BasicDataSource(); //指定數據庫用戶名 dataSource.setUsername("root"); //指定數據庫密碼 dataSource.setPassword("root"); //指定數據庫的URL dataSource.setUrl("jdbc:mysql://localhost:3306"); //指定數據庫的驅動名稱 dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //指定數據庫連接池中初始化連接數的個數 dataSource.setInitialSize(5); // 指定最大的連接數: 同一時刻可以同時向數據庫申請的連接數 dataSource.setMaxActive(5); //指定小連接數: 在數據庫連接池中保存的最少的空閒連接的數量 dataSource.setMinIdle(2); //等待數據庫連接池分配連接的最長時間. 單位為毫秒. 超出該時間將拋出異常. dataSource.setMaxWait(1000 * 5); //從數據源中獲取數據庫連接 Connection connection = dataSource.getConnection(); System.out.println(connection); System.out.println(connection.getClass()); } } 輸出如下: jdbc:mysql://localhost:3306, UserName=root@localhost, MySQL-AB JDBC Driver class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper2.使用配置文件創建連接池
#連接設置 url=jdbc:mysql://localhost:3306/test driverClassName=com.mysql.jdbc.Driver username=root password=root #初始化連接的大小 initialSize=10 ##連接池的最大數據庫連接數。設為0表示無限制 maxActive=100 #連接池的最大空閒連接 maxIdle=50 #連接池的最小空閒連接 minIdle=5 #超時等待時間以毫秒為單位 6000毫秒/1000等於60秒 maxWait=80000 #JDBC驅動建立連接時附帶的連接屬性屬性的格式必須為這樣:[屬性名=property;] #注意:"user" 與 "password" 兩個屬性會被明確地傳遞,因此這裡不需要包含他們。 connectionProperties=useUnicode=true;characterEncoding=utf8 #指定由連接池所創建的連接的自動提交(auto-commit)狀態。 defaultAutoCommit=true #driver default 指定由連接池所創建的連接的只讀(read-only)狀態。 #如果沒有設置該值,則“setReadOnly”方法將不被調用。(某些驅動並不支持只讀模式,如:Informix) defaultReadOnly= #driver default 指定由連接池所創建的連接的事務級別(TransactionIsolation)。 #可用值為下列之一:(詳情可見javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE #oracle只支持READ_COMMITTED(默認),SERIALIZABLE 住程序如下: package com.silence.database; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; public class Test { private static DataSource ds; static{ try { //從src目錄下讀取配置文件 InputStream in = Test.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"); Properties props = new Properties(); //使用properties來讀取配置 props.load(in); //獲取數據源 ds = BasicDataSourceFactory.createDataSource(props); Connection conn = ds.getConnection(); System.out.println(conn); } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnection(){ try { return ds.getConnection(); } catch (SQLException e) { throw new RuntimeException(e); } } public static void main(String[] args) { Connection conn = getConnection(); System.out.println(conn); System.out.println(conn.getClass()); } } }