六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 228|回复: 0

简单实现一个数据库连接池

[复制链接]

升级  72%

8

主题

8

主题

8

主题

童生

Rank: 1

积分
36
 楼主| 发表于 2013-1-14 23:43:26 | 显示全部楼层 |阅读模式
其实就是将数据库连接的Connection对象放在自定义的数据结构中,在需要数据库连接的时候,从该结构中取得即可。
 
package com.woo.demo.jdbc.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.LinkedList;public class MyDataSource {private String url="jdbc:hsqldb:hsql://localhost/woo";private String user="sa";private String pwd="";private static LinkedList<Connection> connectionPool=new LinkedList<Connection>();private final int connectionNum=5;private final int maxConnection=10;private int currentConnectionNum=0;public MyDataSource() {try {for (int i = 0; i < connectionNum; i++) {connectionPool.addLast(this.createConnection());}} catch (Exception e) {throw new ExceptionInInitializerError(e);}}/** * 获取连接 * @return * @throws SQLException */public Connection getConnection()throws SQLException{synchronized (connectionPool) {if(connectionPool.size()>0){currentConnectionNum++;return connectionPool.removeFirst();}if(currentConnectionNum<maxConnection){currentConnectionNum++;return this.createConnection();}throw new SQLException("超过最大连接数");}}/** * 释放连接 * @param con */public void freeConnection(Connection con){currentConnectionNum--;connectionPool.addLast(con);}/** * 创建连接 * @return */private Connection createConnection(){Connection con=null;try{con=DriverManager.getConnection(url, user, pwd);}catch (Exception e) {throw new ExceptionInInitializerError(e);}return con;}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表