中易网

连接池的基本原理? 以及使用连接池的好处?

答案:2  悬赏:40  
解决时间 2021-03-03 13:49
请详细谈论一下,数据库连接池的原理,和使用数据库连接池 的好处??
最好能够附带一个自定义的数据库连接池的例子!!!
不胜感激!!!!!1
最佳答案
package test;
import java.sql.*;
import java.util.*;

public class DBConnpool
{
private int inUse = 0;
private Vector connections = new Vector();
private String poolname = "dbconnpool";
private String dbid = "jdbc:mysql://localhost:3306/teasystem";
private String drivername = "com.mysql.jdbc.Driver";
private String username = "root";
private String password = "123";
private int maxconn = 5000;

public DBConnpool(){}
public void setdbid(String dbid)
{
this.dbid = dbid;
}
public void setusername(String username)
{
this.username = username;
}
public void setpassword(String password)
{
this.password = password;
}
public void setmaxconn(int maxconn)
{
this.maxconn = maxconn;
}
public String getdbid()
{
return dbid;
}
public String getusername()
{
return username;
}
public String getpassword()
{
return password;
}
public int getmaxconn()
{
return maxconn;
}
//将连接返还给连接池
public synchronized void reConnection(Connection conn)
{
Connection con = conn;
connections.addElement(con);
inUse--;
}
//从连接池获取一个连接
public synchronized Connection getConnection()
{
Connection con = null;
if(connections.size()>0)
{
con = (Connection)connections.elementAt(0);
connections.removeElementAt(0);
try{
if(con.isClosed())
{
con = getConnection();
}
}catch(Exception e){
e.printStackTrace();
}
}else if(maxconn == 0||inUse {
con = newConnection();
}
if(con != null)
{
inUse++;
}
return con;
}
private Connection newConnection()
{
Connection con = null;
try{
Class.forName(drivername);
con = DriverManager.getConnection(dbid,username,password);
}catch(Exception e){
e.printStackTrace();
return null;
}
return con;
}
public synchronized void closeConn()
{
Enumeration allConnections = connections.elements();
while(allConnections.hasMoreElements())
{
Connection con = (Connection)allConnections.nextElement();
try{
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}

使用连接池,把暂时不使用的链接放入连接池,到需要使用的时候,从连接池中取出链接使用
全部回答
优点:连接高效、安全、复用 ------解决方案-------------------------------------------------------- 优缺点是在不同的情况下体现的,比如现在连接池里有30个连接: 1、如果应用同时最大只有10个以下,那么只有缺点,占用了资源。 2、如果应用同时最大的时候有20-30个连接,优点是和数据库连接花费的时间很少,速度快,可以复用。 ------解决方案-------------------------------------------------------- 优缺点是在不同的情况下体现的,比如现在连接池里有30个连接: 1、如果应用同时最大只有10个以下,那么只有缺点,占用了资源。 2、如果应用同时最大的时候有20-30个连接,优点是和数据库连接花费的时间很少,速度快,可以复用。 ------解决方案-------------------------------------------------------- 缓冲 初始化最初(配置) 回话同在 数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法。如: 外部使用者可通过getconnection 方法获取连接,使用完毕后再通过releaseconnection 方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 ------解决方案--------------------------------------------------------探讨优缺点是在不同的情况下体现的,比如现在连接池里有30个连接: 1、如果应用同时最大只有10个以下,那么只有缺点,占用了资源。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
超级mmm是不是仿盘???好多人说不是~我也
如何向领导说自己调整岗位
三个数成等差数列,其和是30,公差5,求这三数
感觉出汗,从骨头冷怎么回事,和更年期有关
京东买的手机7p,2个摄像头都有灰,能退款吗
发电机里面的电阻什么用
15日后拟减持股份对股票是好还是不好
我有一张纪71开国大典邮票多少钱
出现在王牌对王牌中的四字成语
赖氏宗祠的赖姓概况
侠盗猎车手圣安地列斯起飞起飞并闪人,到了停
高大,粗壮,羞涩,严肃,疾驰,拘束的反义词是什
问个填空题 www.( ).com
现在是不是有高铁可以到湖南永州
小明在做一道三位数除以一位数的除法时,把除
推荐资讯
她说感谢曾经认识过你?结束语
我想设计一个电机跳闸和设备停止的一个声光报
刘家铝合金在哪里啊,我有事要去这个地方
计算:3x 2 -[5x-( x-3)+2x 2
Man在什么地方啊,我要过去处理事情
48÷7等于7余1的地方有没有错误
人人都说家乡美这句话什么意思?
20平方的沼气池要多少钱
古岩新村我想知道这个在什么地方
2.在泰国,如果你在公路边或者树林里遇到大象
一个角是你60度猜一猜可能是什么三角形说出因
聚爆在哪里可以下载破解版的
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?