kabuka 发表于 2013-1-30 01:59:54

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

其实就是将数据库连接的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;}}
页: [1]
查看完整版本: 简单实现一个数据库连接池