package DBTools.
/** * T数据库连接池工具 * 模拟.NET的连接池,俺一直以为.NET比java优秀 * Copyright: 可以随便使用,如果有改进最好通知俺 * Company:自己作品 * @author董平雷 * @version 1.0 */ import java.sql.*. import java.util.*. import java.io.*.
interface OnConnectionClose { public void Action(PoolConnection sender).
}
public class DBConnectionPool {
private static Vector pConnectionVector = new Vector(). // private static int Count=0. private static int minCount = 1. private static String URL = "". private static String User = "". private static String Password = "". private static String DriverName="". synchronized public static void setMinCount(int Value) { minCount = Value. }
synchronized public static int getMinCount() { return minCount. }
synchronized public static int getCout() { return pConnectionVector.size(). }
synchronized public static Connection getConnection() throws SQLException { PoolConnection pConnection = null. // int aCount=pConnectionVector.size().
for (int I = 0. I < pConnectionVector.size(). i ) { Object oCon = pConnectionVector.elementAt(i). if (oCon instanceof PoolConnection) { PoolConnection aCon = (PoolConnection) oCon. if (!aCon.isUsed()) { pConnection = aCon. break. }
}
} if (pConnection == null) { pConnection = getNewConnection(). pConnectionVector.add(pConnection). } return pConnection.
}
private static PoolConnection getNewConnection() throws SQLException { try { Class.forName( DriverName). }catch(ClassNotFoundException ex) { ex.printStackTrace(). } PoolConnection con = new PoolConnection(URL, User, Password). con.setOnClose(new theOnClose(pConnectionVector)). return con. }
synchronized public static void SetJDBC(String url, String user, String password) { URL = url. User = user. Password = password.
}
synchronized public static void setURL(String url) { URL = url.
}
synchronized public static String getUrl() { return URL.
} synchronized public static void setUser(String user) { User=user. } synchronized public static String getUser() { return User. } synchronized public static void setPassword(String password) { Password=password. } synchronized public static String getPassword() { return Password. }
synchronized public static void setDriverName(String dName) { DriverName=dName.
} synchronized public static String getDriverName() { return DriverName. } } |