数据库连接池:

  连接池是创建和管理一个连接的缓冲池的技术,这些连接真备好被任何需要他们的线程使用,可以对传统的JDBCjava数据库连接()进行优化

  在实际开发中,我们需要频繁的操作数据库,这就意味着我们要不断的创建连接对象,而频繁创建连接对象并且销毁连接对象相对来讲是比较耗时的,针对于这种情况,我们可以创建一个池子出来,里面放了一些连接对象,用的时候从里面拿,用完之后再还回去,这个池子就是数据库连接池.

常见的数据库连接池:

  DBCP: (DataBase Connection Pool)数据库连接池, 由Apache公司开发.
        Druid: 阿里旗下的连接池技术.
        C3P0: 目前使用它的开源项目有: Hibernate, Spring等.

Druid连接池:

  1,自动读取配置文件

 @Test
public void demo2(){
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null; try {
//读取配置文件
Properties properties =new Properties();
properties.load(new FileInputStream("src//config.properties"));
DataSource dataSource=DruidDataSourceFactory.createDataSource(properties); //获取连接
connection =dataSource .getConnection(); String sql="select * from Book;";
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
System.out.println(resultSet.getInt("id")+" "+resultSet.getString("bname"));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.close(resultSet,preparedStatement,connection);
} }

  2,手动设置参数

 @Test
public void demo() {
Connection conn = null;
PreparedStatement ps = null;
ResultSet resultSet = null; DruidDataSource dds = new DruidDataSource();
dds.setDriverClassName("com.mysql.jdbc.Driver");
dds.setUrl("jdbc:mysql:///day03");
dds.setUsername("root");
dds.setPassword("123"); try {
conn = dds.getConnection();
String sql = "select * from Book;";
ps = conn.prepareStatement(sql);
resultSet = ps.executeQuery();
while (resultSet.next()) {
System.out.println(resultSet.getInt("id") + " " + resultSet.getString("bname"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
ps = null;
}
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
resultSet = null;
}
}
}

最新文章

  1. jquery .attr()
  2. clang -rewrite-objc的使用点滴
  3. 【9-20】vimtutor学习笔记
  4. cf 363D
  5. MySQL_前缀索引_建立
  6. c#_错误处理_基础
  7. bzoj 3831 Little Bird (单调队列优化dp)
  8. [原]用C#模拟实现扑克牌发牌、排序程序…
  9. 五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时
  10. Winform 无边框窗口移动自定义边框粗细颜色
  11. Android界面(1) 使用TextView实现跑马灯效果
  12. ReactiveSwift源码解析(一) Event与Observer代码实现
  13. 提交到APPStore出现ERROR ITMS-90474
  14. 吝啬的国度 nyoj
  15. python从入门到实践-6章字典
  16. 南京邮电大学java程序设计作业在线编程第八次作业
  17. 这个表明将http协议转成websocket协议
  18. 常用的几个CSS前端效果
  19. win10、Ubuntu14.04双系统正确卸载Ubuntu的方法
  20. BZOJ 4833: [Lydsy1704月赛]最小公倍佩尔数(数论 + 最值反演)

热门文章

  1. WPF实现射线效果动画
  2. Eclipse离线单独安装hibernate tools成功率低
  3. C# WinForm开发系列 - Report
  4. Sleep(0)的妙用
  5. 【PHP Manager for IIS】让IIS支持PHP
  6. Dojo第一节:学会使用firebug对js,Dojo进行调适
  7. 通过javacv对视频每隔1秒钟截取1张图片
  8. WPF 拼音输入法
  9. Python3.7环境配置
  10. CLR托管内存