zoukankan      html  css  js  c++  java
  • Java学习笔记42(数据库连接池 druid连接池)

    druid连接池:

      是阿里的连接池,druid的稳定性及效率都很高,目前用的比较广,所以建议开发过程中尽量用druid连接池(支持国产最重要)

    druid连接池也需要配置文件,配置文件必须是properites文件,文件名称随意,文件位置也随意通过Properties类来读文件,需要配置工具类来操作连接池;

      配置文件:这里文件名称 druid.properties ,放在src文件夹下方便是用类的加载器读文件,配置文件内容:

    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/qy97
    username=root
    password=123456
    initialSize=5
    maxActive=10
    maxWait=3000

    durid连接池使用方法:

    package com.zs.Druid;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import com.alibaba.druid.support.jconsole.DruidSqlDetailFrame;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.util.Properties;
    
    public class DruidDemo {
        public static void main(String[] args) throws Exception {
            //创建properties对象
            Properties p = new Properties();
    //        通过类的加最器读配置文件
            InputStream in = DuridDemo.class.getClassLoader().getResourceAsStream("druid.properties");
    //        properties对象加载文件
            p.load(in);
    //        创建连接池对象      通过drudi连接池工厂       创建连接池对象方法
            DataSource ds = DruidDataSourceFactory.createDataSource(p);
    //        获得连接对象
            Connection conn = ds.getConnection();
            System.out.println(conn);
        }
    }
    /*结果:com.mysql.jdbc.JDBC4Connection@4961f6af
    * 控制台显示的结果中的红色字体是日志文件,不是报错,之前的C3p0连接池也有日志文件*/

    我们发现druid连接池需要读取配置文件,所以我们把它封装成一个工具类,然后通过工具类来调用连接对象:

    package JDBCUtils;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    /*Druid连接池工具类*/
    public class JDBCUtils {
        private static DataSource ds;
        static{
            Properties p = new Properties();
            InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            try {
                p.load(in);
                ds = DruidDataSourceFactory.createDataSource(p);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }
        public static void  close(Connection conn, PreparedStatement pre){
            if (pre!=null) {
                try {
                    pre.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        public static void  close(Connection conn, PreparedStatement pre, ResultSet rs) {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pre != null) {
                try {
                    pre.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    测试工具类:

    package com.zs.Durid;
    
    import JDBCUtils.JDBCUtils;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    public class DruidTest {
        public static void main(String[] args) {
            Connection conn=null;
            PreparedStatement pre=null;
            try {
                 conn= JDBCUtils.getConnection();
                 String sql="update login set sname=? where id=?";
                 pre = conn.prepareStatement(sql);
                 pre.setString(1,"雷欧");
                 pre.setInt(2,1);
                 pre.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            JDBCUtils.close(conn,pre);
    
        }
    }
  • 相关阅读:
    【软件测试部署基础】maven的认识
    测试管理那些事[组建测试团队的思考]
    Django 框架基本操作(二)
    测试人员的工作开展方式
    产品管理基础知识
    项目经理与职能经理的区别
    python 面向对象(二)
    Python 常用方法和模块的使用(time & datetime & os &random &sys &shutil)-(六)
    python基本案例实现
    JAVA基础——集合浅析
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10649495.html
Copyright © 2011-2022 走看看