zoukankan      html  css  js  c++  java
  • JDBC连接池使用

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

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

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

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

     工具类:

     1 package pool_demo;
     2 
     3 import org.apache.commons.dbcp2.BasicDataSource;
     4 
     5 
     6 import javax.sql.DataSource;//注意的是扩展的javax 里的DataSource。
     7 
     8 public class Jdbcutils {
     9       private   static BasicDataSource  datasour=new BasicDataSource();
    10       static {
    11           datasour.setDriverClassName("com.mysql.jdbc.Driver");
    12           datasour.setUrl("jdbc:mysql://192.168.147.146:3306/homework_day13");
    13           datasour.setUsername("test");
    14           datasour.setPassword("123456");
    15           datasour.setInitialSize(5);//初始化数据库连接数。
    16           datasour.setMaxTotal(12);//最大连接数 需要注意在dbcp2.0的时候没有Maxactive  已经被替换setMaxTotal
    17           datasour.setMinIdle(3);//最小空闲连接数。
    18           datasour.setMaxIdle(5);//最大空闲连接数。
    19           
    20       }
    21       static DataSource get_Datasource(){
    22         return  datasour;
    23     }
    24 }

    测试代码:

     1 package pool_demo;
     2 
     3 import org.apache.commons.dbutils.QueryRunner;
     4 
     5 import org.apache.commons.dbutils.handlers.ArrayListHandler;
     6 
     7 import java.sql.SQLException;
     8 import java.util.List;
     9 
    10 public class pool_test {
    11     public  static  void  main(String ... args){
    12         db_Con.db_test();
    13     }
    14 }
    15 class  db_Con{
    16     public  static void db_test(){
    17         List<Object[]> rest;
    18         try {
    19             QueryRunner qr =new QueryRunner(Jdbcutils.get_Datasource());
    20             rest= qr.query("select *  from system_user",new ArrayListHandler());
    21 
    22         }catch (SQLException ex){
    23             ex.printStackTrace( );//打印异常输出。
    24             throw  new RuntimeException("连接错误"+ex);//这样也可以打印。错误信息比较简明。
    25         }
    26         for (Object[] obj:rest){for (Object i:obj){System.out.print(i);}
    27 
    28         }
    29     }
    30 }
  • 相关阅读:
    SignalR实现服务器与客户端的实时通信
    UIWebView全解
    查漏补缺
    Django的生命周期图解
    权限系统(第一次测试)
    Django权限管理测试
    Django_自带的admin管理页面
    django笔记整理
    cookie/session(过时的写法)
    图书管理系统设置登录验证(cookies)
  • 原文地址:https://www.cnblogs.com/evilliu/p/8488761.html
Copyright © 2011-2022 走看看