最新消息:所有图片和附件已经修复完毕,可以正常访问,如果碰到问题可以发信给管理员:admin@ncfix.com

MYSQL连接池类

android开发 数据记忆 1004浏览 0评论
  1. package model;
  2. import java.sql.Connection;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. import java.util.logging.Logger;
  7. import javax.sql.DataSource;
  8. import org.apache.commons.dbcp.BasicDataSource;
  9. import unit.FX;
  10. /**
  11. * DbcpManager
  12. * 是数据库连接池的总管理类
  13. * 封装了对于连接池的相关操作
  14. *
  15. * @author 集成显卡
  16. *  2010.9.11
  17. */
  18. publicclass DbcpManager {
  19. protectedstatic Logger log=Logger.getLogger(“DbcpManager:”);
  20. //连接数据库的相关参数
  21. privatestatic String driver=“com.mysql.jdbc.Driver”;
  22. /*
  23.            url=”jdbc:mysql://localhost:3306/question?useUnicode=true&characterEncoding=GBK”,
  24.            user=”root”,
  25.            password=”19891231″;
  26.     */
  27. //数据源
  28. privatestatic BasicDataSource basicDS=null;
  29. //当前的连接数
  30. privatestaticint linkNum=0;
  31. /*
  32.     * 私人构造函数
  33.     */
  34. private DbcpManager(){
  35.    }
  36. /**
  37.     * static 语句
  38.     * 实例basicDS
  39.     */
  40. static{
  41.        basicDS=initDataSource(FX.url,FX.username,FX.password);
  42.    }
  43. /**
  44.     * 初始DataSource
  45.     * @param Url
  46.     * @param Name
  47.     * @param Password
  48.     * @return BasicDataSource
  49.     */
  50. protectedstatic BasicDataSource initDataSource(String Url,String Name,String Password){
  51.        BasicDataSource tempDS=new BasicDataSource();
  52.        tempDS.setDriverClassName(driver);
  53.        tempDS.setUrl(Url);
  54.        tempDS.setUsername(Name);
  55.        tempDS.setPassword(Password);
  56.        tempDS.setMaxIdle(20);//池里不会被释放的最多空闲连接数量。设置为0时表示无限制。
  57.        tempDS.setMinIdle(5);
  58.        tempDS.setMaxActive(100);//同一时间可以从池分配的最多连接数量。设置为0时表示无限制。
  59.        tempDS.setMaxWait(3000);
  60.        tempDS.setInitialSize(10);//池启动时创建的连接数量
  61.        tempDS.setRemoveAbandoned(true);
  62.        tempDS.setRemoveAbandonedTimeout(6);// 当空闲连接耗尽,超过这个时间(秒),就会释放未关闭的连 接
  63.        log.info(“BasicDataSource配置成功”);
  64. return tempDS;
  65.    }
  66. /**
  67.     * 断开DataSource
  68.     * @param
  69.     * @return
  70.     */
  71. protectedstaticvoid destoryDataSource(){
  72. try{
  73.            basicDS.close();
  74.        }
  75. catch(Exception e){
  76.            e.printStackTrace();
  77.        }
  78.        basicDS=null;
  79.        log.info(“DataSource destoryed—–OK”);
  80.    }
  81. /**
  82.     * 返回DataSource
  83.     * @return
  84.     */
  85. publicstatic DataSource getDataSource(){
  86. return basicDS;
  87.    }
  88. /**
  89.     * 取得一个Connection
  90.     * 当已经是最大连接限制时warn
  91.     *
  92.     * @return
  93.     */
  94. publicstatic Connection getConnection(){
  95. try{
  96. //取得当前连接数
  97.            linkNum=basicDS.getNumActive();
  98. if(linkNum==basicDS.getMaxActive()){
  99.                log.warning(“达到了连接上限。”);
  100.            }
  101.            log.info(“返回Connection成功,当前连接数:”+(linkNum+1));
  102. return basicDS.getConnection();
  103.        }
  104. catch(Exception e){
  105.            e.printStackTrace();
  106. returnnull;
  107.        }
  108.    }
  109. /**
  110.     * 释放Connection
  111.     * @param con
  112.     */
  113. publicstaticvoid freeConnection(Connection con){
  114. if(con!=null){
  115. try{
  116.                con.close();
  117.            }
  118. catch(Exception e){
  119.                e.printStackTrace();
  120.            }
  121.        }
  122.        log.info(“释放Connection成功,当前连接数:”+(basicDS.getNumActive()));
  123.    }
  124. publicstaticvoid main(String args[]){
  125. try {
  126.            Connection conn = DbcpManager.getConnection();
  127. if(conn != null){
  128.                Statement statement = conn.createStatement();
  129.                ResultSet rs = statement.executeQuery(“select * from item”);
  130. int c = rs.getMetaData().getColumnCount();
  131. while(rs.next()){
  132. for(int i=1;i<=c;i++){
  133.                        System.out.print(rs.getObject(i)+”   “);
  134.                    }
  135.                    System.out.println();
  136.                }
  137.                rs.close();
  138.            }
  139.            DbcpManager.freeConnection(conn);
  140.        } catch (SQLException e) {
  141.            e.printStackTrace();
  142.        }
  143.    }
  144. }

转载请注明:老王杂谈 » MYSQL连接池类

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

川公网安备 51032102000002号