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);

    }
}

猜你喜欢

转载自www.cnblogs.com/Zs-book1/p/10649495.html