中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

單獨使用 commons-dbcp 連接池

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

dbcp 是 apache 上的一個 java 連接池項目,也是 tomcat 使用的連接池組件。單獨使用dbcp需要3個包:common-dbcp.jar ,common-pool.jar,common-collections.jar。

下面是個dbcp的實用類,通過它可以完成DBCP的使用:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
/**
 * @author space
 * @date Aug 12, 2008 3:25:49 PM
 *
 * dbcp 實用類,提供了dbcp連接,不允許繼承;
 * 
 * 該類需要有個地方來初始化 DS ,通過調用initDS 方法來完成,
 * 可以在通過調用帶參數的構造函數完成調用,
 * 可以在其它類中調用,也可以在本類中加一個static{}來完成;
 */
public final class DbcpBean {
 /** 數據源,static */
 private static DataSource DS;
 /** 從數據源獲得一個連接 */
 public Connection getConn() {
  Connection con = null;
  if (Ds!= null) {
   try {
    con = Ds.getConnection();
   } catch (Exception e) {
    e.printStackTrace(System.err);
   }

   try {
    con.setAutoCommit(false);
   } catch (SQLException e) {
    e.printStackTrace();
   }
   return con;
  }
  return con;
 }
 /** 默認的構造函數 */
 public DbcpBean() {
 }
 /** 構造函數,初始化了 DS ,指定 數據庫 */
 public DbcpBean(String connectURI) {
  initDS(connectURI);
 }
 /** 構造函數,初始化了 DS ,指定 所有參數 */
 public DbcpBean(String connectURI, String username, String pswd, String driverClass, int initialSize,
   int maxActive, int maxIdle, int maxWait) {
  initDS(connectURI, username, pswd, driverClass, initialSize, maxActive, maxIdle, maxWait);
 }
 /**
  * 創(chuàng)建數據源,除了數據庫外,都使用硬編碼默認參數;
  * 
  * @param connectURI 數據庫
  * @return
  */
 public static void initDS(String connectURI) {
  initDS(connectURI, "root", "password", "com.mysql.jdbc.Driver", 5, 100, 30, 10000);
 }
 /** 
  * 指定所有參數連接數據源
  * 
  * @param connectURI 數據庫
  * @param username 用戶名
  * @param pswd 密碼
  * @param driverClass 數據庫連接驅動名
  * @param initialSize 初始連接池連接個數
  * @param maxActive 最大激活連接數
  * @param maxIdle 最大閑置連接數
  * @param maxWait 獲得連接的最大等待毫秒數
  * @return
  */
 public static void initDS(String connectURI, String username, String pswd, 
    String driverClass, int initialSize,
    int maxActive, int maxIdle, int maxWait) {
  BasicDataSource ds = new BasicDataSource();
  ds.setDriverClassName(driverClass);
  ds.setUsername(username);
  ds.setPassword(pswd);
  ds.setUrl(connectURI);
  ds.setInitialSize(initialSize); // 初始的連接數;
  ds.setMaxActive(maxActive);
  ds.setMaxIdle(maxIdle);
  ds.setMaxWait(maxWait);
  DS = ds;
 }
 /** 獲得數據源連接狀態(tài) */
 public static Map<String, Integer> getDataSourceStats() throws SQLException {
  BasicDataSource bds = (BasicDataSource) DS;
  Map<String, Integer> map = new HashMap<String, Integer>(2);
  map.put("active_number", bds.getNumActive());
  map.put("idle_number", bds.getNumIdle());
  return map;
 }
 /** 關閉數據源 */
 protected static void shutdownDataSource() throws SQLException {
  BasicDataSource bds = (BasicDataSource) DS;
  bds.close();
 }
 public static void main(String[] args) {
  DbcpBean db = new DbcpBean("jdbc:<a href="mysql://localhost:3306/testit">mysql://localhost:3306/testit");
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  try {
   conn = db.getConn();
   stmt = conn.createStatement();
   rs = stmt.executeQuery("select * from test limit 1 ");
   System.out.println("Results:");
   int numcols = rs.getMetaData().getColumnCount();
   while (rs.next()) {
    for (int i = 1; i <= numcols; i++) {
     System.out.print("\\t" + rs.getString(i) + "\\t");
    }
    System.out.println("");
   }
   System.out.println(getDataSourceStats());
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    if (rs != null)
     rs.close();
    if (stmt != null)
     stmt.close();
    if (conn != null)
     conn.close();
    if (db != null)
     shutdownDataSource();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 }
}

標簽: Mysql 數據庫

版權申明:本站文章部分自網絡,如有侵權,請聯系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯系。

上一篇:Java的身份證號碼工具類

下一篇:最短路 Dijkstra算法