【JDBC】day03_数据库连接池
2015-09-20 15:17
411 查看
【JDBC】day03_数据库连接池
1).properties配置文件
//java.util.Properties用来读取配置文件
Properties prop = new Properties();
//通过文件流读取并解析配置文件内容
prop.load(new FileInputStream("config.properties"));
/*
* String getProperty(String key)
* 根据配置文件中每一项的key("="左边的内容)
* 获取对应的值("="右边的内容)
*/
String driverName = prop.getProperty("driverName");
2)//DBCP 连接池
//org.apache.commons.dbcp.BasicDataSource;
private static BasicDataSource ds;
数据库连接池用的jar包:
3)Connection getConnection()
连接池提供了一个方法:Connection getConnection()
* 该方法会将当前连接池中的一个空闲连接返回,由于连接池在创建时可以设置超时时间,该时间的作用就在这里体现,当连接池中没有空闲连接时,该方法会进入阻塞状态,等待空线程,若设置的超时时间经过后,连接池依然没有空闲连接可用时,该方法会抛超时异常.
代码示例:
1).properties配置文件
//java.util.Properties用来读取配置文件
Properties prop = new Properties();
//通过文件流读取并解析配置文件内容
prop.load(new FileInputStream("config.properties"));
/*
* String getProperty(String key)
* 根据配置文件中每一项的key("="左边的内容)
* 获取对应的值("="右边的内容)
*/
String driverName = prop.getProperty("driverName");
2)//DBCP 连接池
//org.apache.commons.dbcp.BasicDataSource;
private static BasicDataSource ds;
数据库连接池用的jar包:
3)Connection getConnection()
连接池提供了一个方法:Connection getConnection()
* 该方法会将当前连接池中的一个空闲连接返回,由于连接池在创建时可以设置超时时间,该时间的作用就在这里体现,当连接池中没有空闲连接时,该方法会进入阻塞状态,等待空线程,若设置的超时时间经过后,连接池依然没有空闲连接可用时,该方法会抛超时异常.
代码示例:
package day02; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; /** * 该类负责管理数据库的连接 * 当业务逻辑需要使用数据库连接时,只需要通过当前类的 * 静态方法获取连接即可. * 这样的好处在于,连接数据的工作由当前类维护,那么将来 * 数据库连接发生改变时,只有这一个类改变就可以了. * */ public class DBUtil { //DBCP 连接池 private static BasicDataSource ds; static{ try{ //读取配置文件 //java.util.Properties用来读取配置文件 Properties prop = new Properties(); //通过文件流读取并解析配置文件内容 prop.load(new FileInputStream("config.properties")); /* * String getProperty(String key) * 根据配置文件中每一项的key("="左边的内容) * 获取对应的值("="右边的内容) */ String driverName = prop.getProperty("driverName"); String url=prop.getProperty("url"); String username=prop.getProperty("username"); String password=prop.getProperty("password"); //最大连接数 int maxActive=Integer.parseInt(prop.getProperty("maxActive")); //最大等待时间(ms) int maxWait=Integer.parseInt(prop.getProperty("maxWait")); //初始化连接池 ds = new BasicDataSource(); ds.setDriverClassName(driverName); ds.setUrl(url); ds.setUsername(username); ds.setPassword(password); //连接池中的最大连接数 ds.setMaxActive(maxActive); //最大等待时间 getConnection时有效 ds.setMaxWait(maxWait); }catch(Exception e){ e.printStackTrace(); } } /** * 获取一个数据库连接 * @return * @throws Exception */ public static Connection getConnection()throws Exception{ try{ /* * 连接池提供了一个方法: * Connection getConnection() * 该方法会将当前连接池中的一个空闲连接返回 * 由于连接池在创建时可以设置超时时间,该时间的作用 * 就在这里体现,当连接池中没有空闲连接时,该方法会进入 * 阻塞状态,等待空线程,若设置的超时时间经过后,连接池 * 依然没有空闲连接可用时,该方法会抛超时异常. */ return ds.getConnection(); }catch(Exception e){ System.out.println("数据库连接异常!"); throw e; } } }
相关文章推荐
- 【Redis】Redis学习笔记02_使用Redis来管理Tomcat集群的Session
- SQLSERVER查询所有数据库名和表名
- [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册
- mongodb 创建用户
- Navicat for Oracle 表名不存在 ORA00903
- oracle体系结构(2)
- 15个实用的管理mysql的mysqladmin命令
- 【JDBC】day01_Java连接Oracle数据库过程及常用方法
- Meteor - 基于Node.js和MongoDB的全栈开发框架
- 查看及修改Oracle编码格式方法
- 存储过程 Sql server
- Redis Sentinel
- 数据库范式——通俗易懂
- postgresql 触发器
- 【Oracle】day05_视图_序列_索引_约束
- Access, SQL Server, Oracle, MySQL的区别与相似
- MySQL数据库
- 使用java语言向oracle数据库中存入、取出图片及文件
- mysql join中,on和where的区别
- Oracle客户端PL_SQL的安装