/** * A)当用户调用pool = ConnectionPool.getInstance(username,password)方法时<br> * 执行构造方法--> 调用init()方法(1.读取配置文件中的driverClassName,url并设置, <br> * 2.创建Vector容器<br> * 3.addConn():通过driverClassName,url,username,password 向容器中添加Connection对象)<br> * B)conn = pool.getConn();//得到Connection对象. * C)conn用完后不是调用close()方法而是调用 release()方法,将连接放回池中 * D)退出程序时调用 closeAllConnection()方法关闭所有连接 */ public class ConnectionPool { private String driverClassName; private String url; private String username; private String password; private Vector<Connection> pool; private int poolSize = 1; private static ConnectionPool instance; private ConnectionPool(String username, String password) { this.username = username; this.password = password; init(); } public static ConnectionPool getInstance(String username, String password) { if (instance == null) { instance = new ConnectionPool(username, password); } return instance; } /** * 如果容器中有Connection 返回一个并从容器中移除<br> * 否则返回NULL */ public synchronized Connection getConn() { if (pool.size() > 0) { Connection conn = pool.get(0); pool.remove(0); return conn; } return null; } public synchronized void release(Connection conn) { pool.add(conn); } public synchronized void closeAllConnection() { for (int i = 0; i < pool.size(); i++) { try { pool.get(i).close(); } catch (SQLException e) { e.printStackTrace(); } pool.remove(i); } } private void init() { readConfig();// 读取配置文件中的url pool = new Vector<Connection>(poolSize); addConn(); } private void readConfig() { FileInputStream input = null; try { input = new FileInputStream(System.getProperty("user.dir") + "/data/db.properties"); } catch (FileNotFoundException e1) { e1.printStackTrace(); } Properties pro = new Properties(); try { pro.load(input); driverClassName = (String) pro.get("driverClassName"); url = (String) pro.get("url"); poolSize = Integer.parseInt((String) pro.get("poolSize")); } catch (IOException e) { e.printStackTrace(); // 如果读取属性出错 } finally { if (input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } } private void addConn() { Connection conn = null; try { for (int i = 0; i < poolSize; i++) { Class.forName(driverClassName); conn = DriverManager.getConnection(url, username, password); pool.add(conn); } } catch (ClassNotFoundException e) { e.printStackTrace(); // driverClassName 错误时 } catch (SQLException e) { e.printStackTrace(); // url, username, password错误时 } } }
您还没有登录,请您登录后再发表评论
java实现的电话缴费系统!(基于cms)
j2se数据库登陆模块课程设计,实现了登陆和管理员管理模块
我的学习笔记 需要就下载吧 接口 上课时的课堂笔记及相关程序
包含j2se基础 j2se桌面项目开发(坦克大战,贪吃蛇,聊天室)oricle数据库,JDBC操作和mysql, servert and jsp html,css and javascript 项目开发等等 你一生不容错过的java学习资源 链接地址:...
java 入门教程 课件 j2se java 入门教程 课件 j2se java 入门教程 课件 j2se java 入门教程 课件 j2se
java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏...
J2SE的源代码练习(含数据库oracle)J2SE的源代码练习(含数据库oracle)
java工资管理系统(J2SE) 数据库:access(需要在本机配置数据源) 主类:dl.java
J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API
J2SE项目操作持久层还是很费力的,本资源使用现在spring框架比较流行的Mybatis-Plus作为操作持久层的框架,供需要人的参考学习。 项目实现了一些简单的例子: 1、驼峰命名、输出SQL日志 2、增、删、改、查; 3、多表...
NULL 博文链接:https://liujunhg.iteye.com/blog/1127978
J2SE基础知识大全 J2SE基础知识大全 J2SE基础知识大全
J2SE课件J2SE课件J2SE课件J2SE课件J2SE课件J2SE课件
j2se1.5中文api
J2SE基础源代码
zxing/zxing-j2se-1.7.jar包, 包含类 com.google.zxing.StringsResourceTranslator.class com.google.zxing.client.j2se.BufferedImageLuminanceSource.class ...
j2se doc 中文版 j2se doc 中文版 j2se doc 中文版 j2se doc 中文版
写了一个抽象工厂模式! 请大家参考,给点意见! 工厂模式用的很多,很广泛!
J2SE桌面应用开发 J2SE桌面应用开发J2SE桌面应用开发 J2SE桌面应用开发 J2SE桌面应用开发
很好的j2se的API
相关推荐
java实现的电话缴费系统!(基于cms)
j2se数据库登陆模块课程设计,实现了登陆和管理员管理模块
我的学习笔记 需要就下载吧 接口 上课时的课堂笔记及相关程序
包含j2se基础 j2se桌面项目开发(坦克大战,贪吃蛇,聊天室)oricle数据库,JDBC操作和mysql, servert and jsp html,css and javascript 项目开发等等 你一生不容错过的java学习资源 链接地址:...
java 入门教程 课件 j2se java 入门教程 课件 j2se java 入门教程 课件 j2se java 入门教程 课件 j2se
java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏...
J2SE的源代码练习(含数据库oracle)J2SE的源代码练习(含数据库oracle)
java工资管理系统(J2SE) 数据库:access(需要在本机配置数据源) 主类:dl.java
J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API
J2SE项目操作持久层还是很费力的,本资源使用现在spring框架比较流行的Mybatis-Plus作为操作持久层的框架,供需要人的参考学习。 项目实现了一些简单的例子: 1、驼峰命名、输出SQL日志 2、增、删、改、查; 3、多表...
NULL 博文链接:https://liujunhg.iteye.com/blog/1127978
J2SE基础知识大全 J2SE基础知识大全 J2SE基础知识大全
J2SE课件J2SE课件J2SE课件J2SE课件J2SE课件J2SE课件
j2se1.5中文api
J2SE基础源代码
zxing/zxing-j2se-1.7.jar包, 包含类 com.google.zxing.StringsResourceTranslator.class com.google.zxing.client.j2se.BufferedImageLuminanceSource.class ...
j2se doc 中文版 j2se doc 中文版 j2se doc 中文版 j2se doc 中文版
写了一个抽象工厂模式! 请大家参考,给点意见! 工厂模式用的很多,很广泛!
J2SE桌面应用开发 J2SE桌面应用开发J2SE桌面应用开发 J2SE桌面应用开发 J2SE桌面应用开发
很好的j2se的API