一:一个服务在操作数据库的操作的时候,连接和关闭资源是很消耗系统的资源,不能再每次用户操作数据库的时候,都需要重新建立连接和 关闭连接。

如果这样操作的话,对系统和用户来说,都会消耗大量的资源。所以操作数据库的时候,使用数据库连接池,在服务启动的时候,需要初始化连接,在用户调用的时候,会分配一个连接,用户使用完之后,会归还连接池。

这样就会避免减少系统开销和提升用户的体验。

现在一般使用连接池技术是Apache的dbcp技术。

工具类:

 package pool_demo;

 import org.apache.commons.dbcp2.BasicDataSource;

 import javax.sql.DataSource;//注意的是扩展的javax 里的DataSource。

 public class Jdbcutils {
private static BasicDataSource datasour=new BasicDataSource();
static {
datasour.setDriverClassName("com.mysql.jdbc.Driver");
datasour.setUrl("jdbc:mysql://192.168.147.146:3306/homework_day13");
datasour.setUsername("test");
datasour.setPassword("");
datasour.setInitialSize();//初始化数据库连接数。
datasour.setMaxTotal();//最大连接数 需要注意在dbcp2.0的时候没有Maxactive 已经被替换setMaxTotal
datasour.setMinIdle();//最小空闲连接数。
datasour.setMaxIdle();//最大空闲连接数。 }
static DataSource get_Datasource(){
return datasour;
}
}

测试代码:

 package pool_demo;

 import org.apache.commons.dbutils.QueryRunner;

 import org.apache.commons.dbutils.handlers.ArrayListHandler;

 import java.sql.SQLException;
import java.util.List; public class pool_test {
public static void main(String ... args){
db_Con.db_test();
}
}
class db_Con{
public static void db_test(){
List<Object[]> rest;
try {
QueryRunner qr =new QueryRunner(Jdbcutils.get_Datasource());
rest= qr.query("select * from system_user",new ArrayListHandler()); }catch (SQLException ex){
ex.printStackTrace( );//打印异常输出。
throw new RuntimeException("连接错误"+ex);//这样也可以打印。错误信息比较简明。
}
for (Object[] obj:rest){for (Object i:obj){System.out.print(i);} }
}
}

最新文章

  1. 如果mac电脑的usb转接器连接wlan时不显示,也就是不识别usb此时的网络连接没有,解决办法就是如下
  2. prototype 原型
  3. mysql,node.js
  4. JavaScript中的arguments,callee,caller
  5. java中异常注意问题(发生在多态是的异常问题)
  6. IOS 回收键盘通用代码
  7. c++强制类型转换:dynamic_cast、const_cast 、static_cast、reinterpret_cast
  8. android模拟器使用PC串口调试
  9. java中的容器问题
  10. 【转】Java编程之字符集问题研究
  11. (二)Struts2 核心知识
  12. vue-cli 脚手架总结
  13. android 源代码快速搜索引擎OpenCrok
  14. 设计模式 - 适配器模式(adapter pattern) 具体解释
  15. linux upstart启动配置
  16. 数据库表反向生成(二) Django ORM inspectdb
  17. js中判断鼠标滚轮方向的方法
  18. 关于Linux虚拟化技术KVM的科普 科普一(先用起来!)
  19. Python Ast介绍及应用
  20. 打包java程序生成exe

热门文章

  1. 3D旋转效果
  2. Vue 框架-12-Vue 项目的详细开发流程
  3. 【Python】Java程序员学习Python(九)— 集合(list、tuple、range)和映射(dict)
  4. CentOS6.5安装vncserver实现图形化访问
  5. django简介及URL
  6. 使用 Versions for mac 进行版本控制
  7. Linux 重定向详解
  8. 铁乐学Python_Day34_Socket模块2和黏包现象
  9. C++ 读书笔记1
  10. November 17th 2016 Week 47th Thursday