亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c3p0數據庫連接池問題

c3p0數據庫連接池問題

慕祈 2017-05-21 16:58:41
package db;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;/**?* 數據庫操作工具類?* @author lamp?*/public class DBUtils {? ?? private static ComboPooledDataSource ds=null; ? private static Connection conn=null; private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://localhost:3306/imooc.student?useUnicode=true&characterEncoding=UTF-8"; private static final String USERNAME = "root"; private static final String PASSWORD = "lingqi.zaq"; ? ? private DBUtils(){}? ??? ? //靜態初始化塊進行初始化 ?? ? static{ ?? ? ? ? try { ?? ? ? ? ? ? ds = new ComboPooledDataSource();//創建連接池實例 ?? ? ? ? ? ? ??? ? ? ? ? ? ds.setDriverClass(DRIVER);//設置連接池連接數據庫所需的驅動 ?? ? ? ? ? ? ??? ? ? ? ? ? ds.setJdbcUrl(URL);//設置連接數據庫的URL ?? ? ? ? ? ? ??? ? ? ? ? ? ds.setUser(USERNAME);//設置連接數據庫的用戶名 ?? ? ? ? ? ? ??? ? ? ? ? ? ds.setPassword(PASSWORD);//設置連接數據庫的密碼 ?? ? ? ? ? ? ??? ? ? ? ? ? ds.setMaxPoolSize(50);//設置連接池的最大連接數 ?? ? ? ? ? ? ??? ? ? ? ? ? ds.setMinPoolSize(2);//設置連接池的最小連接數 ?? ? ? ? ? ? ??? ? ? ? ? ? ds.setInitialPoolSize(10);//設置連接池的初始連接數 ?? ? ? ? ? ? ??? ? ? ? ? ? ds.setMaxStatements(100);//設置連接池的緩存Statement的最大數 ? ? ? ? ? ? ?? ? ? ? } catch (Exception e) { ?? ? ? ? ? ? e.printStackTrace(); ?? ? ? ? } ?? ? } ?? ??? ??? ? //定義一個獲取數據庫連接的方法? ? public static Connection getConnection(){? ? ? ??? ? ? ? try {? ? ? ? conn = ds.getConnection(); ?? ? ? ? } catch (SQLException e) {? ? ? ? ? ? e.printStackTrace();? ? ? ? ? ? System.out.println("獲取連接失敗");? ? ? ? }? ? ? ? return conn;? ? }? ??? ? /**? ? ?* 關閉數據庫連接? ? ?* @param rs? ? ?* @param stat? ? ?* @param conn? ? ?*/? //釋放資源 ?? ? public static void close(ResultSet rs,PreparedStatement ptmt,Connection conn){ ?? ? ? ? if(null != rs){ ?? ? ? ? ? ? try { ?? ? ? ? ? ? ? ? rs.close(); ?? ? ? ? ? ? } catch (SQLException e) { ?? ? ? ? ? ? ? ? e.printStackTrace(); ?? ? ? ? ? ? } ?? ? ? ? } ?? ? ? ? ??? ? ? ? if(null != ptmt){ ?? ? ? ? ? ? try { ?? ? ? ? ? ? ? ? ptmt.close(); ?? ? ? ? ? ? } catch (SQLException e) { ?? ? ? ? ? ? ? ? e.printStackTrace(); ?? ? ? ? ? ? } ?? ? ? ? } ?? ? } ?? ??? ? //測試? ? public static void main(String[] args) { Connection c = DBUtils.getConnection(); if(c!=null){ System.out.println("數據庫連接成功"); try { c.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println("數據庫連接失敗"); } }}這是小弟的數據庫連接池代碼發現每次運行項目都會向數據庫要好多個連接,而不是在已有的連接里面復用。知道超過最大連接數后,整個程序就卡死了是哪邊沒寫對嗎
查看完整描述

目前暫無任何回答

  • 0 回答
  • 0 關注
  • 1499 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號