zoukankan      html  css  js  c++  java
  • Druid数据库连接池

    一、Druid连接池的创建

    package cn.zhouzhou;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.Properties;
    
    import javax.sql.DataSource;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    /*
     *一、Druid连接池?
     *         和之前的c3p0一样,连接池。
     *         阿里的产品。
     * 
     *二、怎么用?
     *
     *         1.导包
     *             将【druid-1.0.9 jar】导入到lib目录中。
     * 
     *         2.定义配置文件 .properties 仅此一种格式。 
     *             1.【druid.properties】可以放在任意位置。------------------------->里面的数据库  修改成自己要用的!
     *             
           3.加载文件?  * Properties pro01=new Properties(); * InputStream in01=Druid连接池.class.getClassLoader().getResourceAsStream("druid.properties"); * pro01.load(in01); * * 4.获得连接池对象 * DataSource da01=DruidDataSourceFactory.createDataSource(pro01); * * 5.获取连接 * Connection con01=da01.getConnection(); *
    */ public class Druid连接池 { public static void main(String[] args) throws Exception { Properties pro01=new Properties();//1.加载文件 InputStream in01=Druid连接池.class.getClassLoader().getResourceAsStream("druid.properties");//2.通过流的方式获取文件 pro01.load(in01); DataSource da01=DruidDataSourceFactory.createDataSource(pro01);//3.连接池对象 Connection con01=da01.getConnection();//4.获取连接 System.out.println(con01);//4.打印地址,验证是否连接成功 String sql01="select * from shop"; PreparedStatement pr01=con01.prepareStatement(sql01); ResultSet rs01=pr01.executeQuery(); while (rs01.next()) { System.out.println(rs01.getInt(1)+" "+rs01.getString(2)); } in01.close(); //关闭流 } }

    二、改良版Druid连接池

      我们发现  在加载文件的时候太复杂,能否将其封装成一个工具类,方便使用。

    package JdbcUtils;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    import javax.sql.DataSource;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    
    /*
     * 封装一个Druid的工具类 Jdbc
     * 
     */
    public class Jdbc {
        
        private static DataSource ds;    //1.定义成员变量 DataSource
        
        
        static{        
            try
            {    //2.加载配置文件 获得连接池
                Properties pro01=new Properties();
                pro01.load(Jdbc.class.getClassLoader().getResourceAsStream("druid.properties"));
                ds=DruidDataSourceFactory.createDataSource(pro01);
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
        
        public static Connection getConnection() throws SQLException{    //获得连接
            return ds.getConnection();
        }
        
        public static void  close(Statement start,Connection con) {    //释放资源
            if (start!=null) {
                try {
                    start.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (con!=null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            
        }
        public static void  close(ResultSet rs,Statement start,Connection con) {    //重载  继续释放资源。
            if (rs!=null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (start!=null) {
                try {
                    start.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (con!=null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            
        }
        
    
    }

    三、测试Jdbc 封装类。

    package cn.zhouzhou;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import JdbcUtils.Jdbc;
    
    /*
     * 测试我们写的封装 jdbc工具类
     * 
     */
    public class Text01 {
        public static void main(String[] args) {
            Connection con01=null;
            PreparedStatement ps=null;
            try {
                
                 con01=Jdbc.getConnection();//获得连接
                 
                 String sql01="insert into shop values(999,?,?,'刚把对!')";//定义SQL语句 占位子节符    在shop中 添加一条数据
                
                 ps=con01.prepareStatement(sql01); //获得接口 执行平台
                
                 ps.setString(1, "haha"); //设置键值对
                 ps.setDouble(2, 66666);
                 
                 int i=ps.executeUpdate();//执行SQL语句
                 System.out.println(i);
                 
            } catch (SQLException e)
            {
                e.printStackTrace();
            }finally{
                Jdbc.close(ps, con01);
            }
            
        }
    
    }
  • 相关阅读:
    下载安装包,安装PySide2到windows系统
    Qt5 中关于信号槽 SIGNALS/SLOTS的改动
    软件产品线、MVC、MVP
    UML序列图总结
    浅谈UML中常用的几种图
    docker安装gitlab-ce镜像,使用其他端口
    git在linux下的安装和使用
    服务注册中心Eureka Server的简单配置、访问控制配置以及高可用配置
    让你远离sql语句的Mybatis工具:Tkmybatis
    tk mybatis update 各种类型
  • 原文地址:https://www.cnblogs.com/ZXF6/p/10651597.html
Copyright © 2011-2022 走看看