社区
Java SE
帖子详情
求一个数据库连接池,高分相送
snap_bug
2004-06-16 02:04:22
那位有比较好一点的已经实现的数据库连接池给俺一个,感激不尽!!
邮件:sqgme@163.com
...全文
175
11
打赏
收藏
求一个数据库连接池,高分相送
那位有比较好一点的已经实现的数据库连接池给俺一个,感激不尽!! 邮件:sqgme@163.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nighthawk
2004-08-02
打赏
举报
回复
package hall;
import java.util.HashMap;
import java.util.Vector;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;
/**
* <p>Title: </p>
* <p>Description: test</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author xww
*/
public class ConnectionPool {
//连接池的管理器,首先初始化,仅仅有一个对象,管理连接池
private static HashMap connectionPoolManager = new HashMap();
//没有用过的连接池,用vector实现同步
private static Vector noUseConnectionPool= new Vector();
//没有用过的连接池
private static HashMap nowUseConnectionPool = new HashMap();
private static String dbDriver = "oracle.jdbc.driver.OracleDriver";
private static String dbUrl = "jdbc:oracle:thin:@localhost:1521:db";
private static String userName = "xww";
private static String userPassword = "11111111";
//默认为100个连接池
private static int MAX_POOL = 100;
//singleTon 设计模式
private ConnectionPool(String driver, String url, String name,
String password, int max) throws
ClassNotFoundException {
Class.forName(driver);
dbUrl = url;
userName = name;
userPassword = password;
MAX_POOL = max;
}
public static ConnectionPool getConnManagerInstance(String poolName) throws
ClassNotFoundException {
ConnectionPool tempPool = (ConnectionPool) connectionPoolManager.get(
poolName);
if (tempPool == null) {
tempPool = new ConnectionPool(dbDriver, dbUrl, userName, userPassword,
MAX_POOL);
connectionPoolManager.put(poolName, tempPool);
return tempPool;
}
else {
return tempPool;
}
}
//通过连接池获得真正的链接
public static Connection getConnection() throws java.sql.SQLException {
Connection conn = null;
synchronized (noUseConnectionPool) {
if (noUseConnectionPool.size() > 0) {
conn = (Connection) noUseConnectionPool.firstElement();
noUseConnectionPool.remove(conn);
return conn;
}
}
//如果数据库连接池没有链接了,自己创建一个
if (conn == null) {
conn = createConnection(dbDriver, dbUrl, userName, userPassword);
}
else if (conn.isClosed()) {
nowUseConnectionPool.remove(conn);
conn = createConnection(dbDriver, dbUrl, userName, userPassword);
}
conn.setAutoCommit(false);
nowUseConnectionPool.put(conn, conn);
return conn;
}
//如果连接池没有链接了,就需要产生一个链接
private static Connection createConnection(String driver, String url,
String user, String password) throws
java.sql.SQLException {
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
public static void releaseConnection(Connection conn, boolean isCommit) throws
java.sql.SQLException {
if (isCommit) {
conn.commit();
}
else {
conn.rollback();
}
nowUseConnectionPool.remove(conn);
if (noUseConnectionPool.size() + nowUseConnectionPool.size() < MAX_POOL) {
synchronized (noUseConnectionPool) {
noUseConnectionPool.add(conn);
}
}
else {
conn.close();
}
}
public static void main(String[] args) {
//测试模拟10个客户
for (int i = 0; i < 10; i++) {
try {
//xxxx 一般为属性文件读取
ConnectionPool pool = ConnectionPool.getConnManagerInstance("xxxx");
Connection conn = pool.getConnection();
}
catch (SQLException ex1) {
//处理异常
}
catch (ClassNotFoundException ex) {
//处理异常
}
}
}
}
wangdaobang
2004-08-02
打赏
举报
回复
楼主,给我一份,wangdbang1981@yahoo.com.cn, Thanks a lot
angel7532
2004-07-26
打赏
举报
回复
baron7532@163.com
angel7532
2004-07-26
打赏
举报
回复
楼主,也给我发一份好吗?再次感谢
jt80
2004-07-26
打赏
举报
回复
楼主,能否我发一份,谢谢了!
jt-80@163.com
snap_bug
2004-06-16
打赏
举报
回复
to all:
首先多谢各位的指点。
我的程序和应用服务器没有关系,自己写的连接池方便管理,而且以后可以用在任何地方。
to orion11:
我已经收到你的程序,在看,谢谢。
orion11
2004-06-16
打赏
举报
回复
我已发送了一个给你了
北极猩猩
2004-06-16
打赏
举报
回复
Apache commons-dbcp啊
Philzzf
2004-06-16
打赏
举报
回复
http://www.google.com/search?q=java+%CA%FD%BE%DD%BF%E2+%C1%AC%BD%D3%B3%D8&hl=zh-CN&lr=lang_zh-CN&ie=gb2312
阿古
2004-06-16
打赏
举报
回复
用应用服务器自带的不是很好么!
mx1029
2004-06-16
打赏
举报
回复
用Tomcat自己带的连接池。很好用的。
去网上查一下。有很多介绍的。。。
Java源码系列-手写
数据库连接池
(附源码)
为了理解
数据库连接池
的底层原理,我们可以自己手写
一个
类似Hikari,Druid一样的高性能的
数据库连接池
!通过手写
数据库连接池
掌握
数据库连接池
底层运行原理,胜任企业级开发、提高编程内功!!!
数据库连接池
在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 课程配套资料在课程附件中进行下载,学习过程总遇到任何技术相关问题可以及时沟通,远程解决~ 课程截图:
史上最全,Python爬虫requests库。你必须得会。
Requests 是
一个
为人类设计的简单而优雅的 HTTP 库。requests 库是
一个
原生的 HTTP 库,比 urllib3 库更为容易使用。requests 库发送原生的 HTTP 1.1 请
求
,无需手动为 URL 添加查询串, 也不需要对 POST 数据进行表单编码。相对于 urllib3 库, requests 库拥有完全自动化 Keep-alive 和 HTTP 连接池的功能。requests 库包含的特性如下。❖ 1Keep-Alive & 连接池❖ 国际化域名和 URL。
从零开始打造代理池
文章目录引入包存储模块获取模块将获取代理与存储代理相结合检测模块显示模块效果 引入包 import pymysql from random import choice from warnings import filterwarnings import traceback import requests from bs4 import BeautifulSoup import aiohttp import asyncio import time # 针对ipython不支持的情况 import nest
多媒体技术简答题和论述题
1、 MMX技术的特点 (1)打包的数据类型 (2)与 IA 结构完全兼容 (3)64 位的 MMX寄存储器组 (4)增强的指令系统 2、超文本和超媒体体系结构主要由三个层次组成,它们分别是? (1)用户接口层 (2)超文本抽象机层 (3)数据库层 3、多媒体创造过程可分为那些步骤? 应用目标分析、脚本编写、设计框架、各种媒体数据准备、制成合成、测试 4、简述数据压缩技术的三个重要指标 答:数据压缩技术的三个重要指标为: (1) 压缩前后所需的信息存储量之比要大; (2) 实现压缩的算法要简单,压缩、解压缩
操作系统课后题答案二
第六章 1.何谓数据项、记录和文件? 答:①数据项分为基本数据项和组合数据项。基本数据项描述
一个
对象某种属性的字符集,具有数据名、数据类型及数据值三个特性。组合数据项由若干数据项构成。 ②记录是一组相关数据项的集合,用于描述
一个
对象某方面的属性。 ③文件是具有文件名的一组相关信息的集合。 2.文件系统的模型可分为三层,试说明其每一层所包含的基本内容。 答:第一层...
Java SE
62,615
社区成员
307,318
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章