定义了一个数据库连接池
定义了一个数据库连接池,经测试,可以使用。但现在面临的问题是。有2个类都要使用这个连接池,其他类中应该怎么引用这个类?麻烦您了
连接池是这样定义的
mport Mode.Link;
import Tools.LinkType;
import javax.swing.*;
import java.awt.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.LinkedList;
/**
* @类名称: ZjcPool
* @功能: 中间层连接池
* @返回:
* @理解:
*/
public class ZjcPool {
private static ZjcPool zjcPool;
private Link link=new Link();
private LinkedList<Connection> Zjc_Source = new LinkedList<>();
private int MaxCnt=0;//定义初始链接数量
private Connection retCon;//定义返回连接
private String dbDriver = "oracle.jdbc.driver.OracleDriver";
private String dbURL = "jdbc:oracle:thin:@192.168.2:orcl";
private String dbUser = "PHIP";
private String dbPwd = "PHIP";
//构造函数
private ZjcPool(Link link,int cnt){
this.link=link;
this.MaxCnt=cnt;
Init();
}
//单例模式实现方法
public synchronized static ZjcPool getInstance(Link link,int cnt){
if(zjcPool==null){
zjcPool=new ZjcPool(link,cnt);
return zjcPool;
}
System.out.println("重复");
return null;
}
// 执行初始化
public synchronized void Init(){
LinkType type = this.link.getType();
try{
switch(type) { //根据type字段获取连接数据库类型,并组合链接驱动
case ORACLE:
this.dbDriver = "oracle.jdbc.driver.OracleDriver";
this.dbURL = "jdbc:oracle:thin:@" + this.link.getIP() + ":" + this.link.getPort() + ":" + this.link.getDataBaseName();
break;
case MSSQL:
this.dbDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
this.dbURL = "jdbc:sqlserver://" + this.link.getIP() + ":" + this.link.getPort() + ";databaseName=" + this.link.getDataBaseName() + ";";
}
this.dbUser = this.link.getUser();
this.dbPwd = this.link.getPassword();
Class.forName(this.dbDriver); //获取dbDriver的Class对象
for(int a=0;a<MaxCnt;a++) {
this.retCon = DriverManager.getConnection(this.dbURL, this.dbUser, this.dbPwd);
Zjc_Source.add(retCon);
}
}catch (Exception var6) {
var6.printStackTrace();
JOptionPane.showMessageDialog((Component)null, var6.getLocalizedMessage(), "提示", 0);
}
}
//返回一个链接对象
public synchronized Connection getZjc_Con() {
if(Zjc_Source.isEmpty()){
return null;
}
return this.retCon= Zjc_Source.pollFirst(); //删除第一个链接对象并返回第一个链接对象
}
//对返回来的链接对象添加到缓冲池中
public synchronized void releaseConnection(Connection conn) {
Zjc_Source.add(conn);
}
//关闭所有链接
public synchronized void CloseALLConn(){
Connection con;
for(int i=0;i<Zjc_Source.size();i++){
con=Zjc_Source.get(i);
try{
con.close();
}catch (SQLException E){
E.printStackTrace();
}
}
}
}