67,514
社区成员
发帖
与我相关
我的任务
分享
package com.pdbg.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedList;
import java.util.ResourceBundle;
public class DataSourceV1 {
private static String initFileName="dbinfo";
private static String username=null;
private static String password=null;
private static String driverClass=null;
private static String url=null;
private static int connectionCount=0;
private static int maxConnectionCount=0;
private static LinkedList<Connection> idleConnections=null;
private static LinkedList<Connection> usedConnections=null;
static{
ResourceBundle rb =ResourceBundle.getBundle(initFileName);
username=rb.getString("username");
password=rb.getString("password");
driverClass=rb.getString("driverClass");
url=rb.getString("url");
connectionCount=Integer.parseInt(rb.getString("connectionCount"));
maxConnectionCount=Integer.parseInt(rb.getString("maxConnectionCount"));
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
idleConnections=new LinkedList<Connection>();
usedConnections=new LinkedList<Connection>();
for (int i=0;i<connectionCount;i++){
try {
idleConnections.add(DriverManager.getConnection(url, username, password));
} catch (SQLException e) {
e.printStackTrace();
System.out.println("数据库套接字错误");
}
}
}
/**
* 获得数据库连接方法
* @return
* @throws SQLException
*/
public static Connection getConnection(){
Connection conn=null;
if (idleConnections.size()>0){
conn=idleConnections.removeFirst();
usedConnections.addLast(conn);
}else if (usedConnections.size()<maxConnectionCount){
try {
conn=DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
usedConnections.addLast(conn);
}
return conn;
}
/**
* 关闭资源方法
* @param rs ResultSet
* @param st Statement
* @param connection Connection
*/
public static void closeAll(ResultSet rs,Statement st,Connection connection){
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (st!=null){
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (connection!=null){
if (idleConnections.size()+usedConnections.size()>=connectionCount){
usedConnections.remove(connection);
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}else{
idleConnections.addLast(connection);
usedConnections.remove(connection);
}
}
}
}