zoukankan      html  css  js  c++  java
  • Druid数据库连接池基本使用

    一、导入Druid的jar包和数据库驱动jar包

    二、定义配置文件

      与c3p0不同,Druid的配置文件是properties形式的。而且Druid不像c3p0那样可以自动加载配置文件,Druid需要手动去指定配置文件,所以Druid的配置文件可以叫任意名称,并且可以放置在任意目录下。

    # druid.properties文件的配置
    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3307/test_db
    username=root
    password=root
    # 初始化连接数量
    initialSize=5
    # 最大连接数
    maxActive=10
    # 最大超时时间
    maxWait=3000

    目录结构如下:

      

     三、使用Druid连接池

    package cn.xj.datasource.druid;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.util.Properties;
    
    public class Druid_demo {
        public static void main(String[] args) throws Exception {
            //加载配置文件
            Properties pro = new Properties();
            InputStream is = Druid_demo.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);
            //获取连接池对象
            DataSource ds = DruidDataSourceFactory.createDataSource(pro);
            //获取连接
            Connection conn = ds.getConnection();
            System.out.println(conn);
        }
    }

     四、定义工具类

    步骤:

      1.定义一个类JDBCUtils

        *类里边提供静态代码块加载配置文件,初始化连接池对象

        *类里边要提供这些方法:

          (1)获取连接方法:通过数据库连接池获取连接

          (2)释放资源

          (3)获取连接池的方法

    package cn.xj.datasource.utils;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    public class JDBCUtils {
        //定义成员变量
        private static DataSource ds;
    
        static {
            try {
                //加载配置文件
                Properties pro = new Properties();
                pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
                //获取连接池对象DataSource
                ds = DruidDataSourceFactory.createDataSource(pro);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        //获取链接
        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }
    
        //释放资源
        public static void close(Statement stmt,Connection conn){
            if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null){
                try {
                    conn.close();  //归还连接
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void close(ResultSet rs,Statement stmt, Connection conn){
            if (rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null){
                try {
                    conn.close();  //归还连接
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        //获取连接池方法
        public static DataSource getDateSource(){
            return ds;
        }
        
    }

    五、使用工具类      

    package cn.xj.datasource.druid;
    
    import cn.xj.datasource.utils.JDBCUtils;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class Druid_demo02 {
        public static void main(String[] args) {
            Connection conn = null;
            PreparedStatement pstmt = null;
            try {
                //获取连接
                conn = JDBCUtils.getConnection();
                //定义sql语句
                String sql = "insert into account value(null,?,?)";
                //获取PreparedStatement对象
                pstmt = conn.prepareStatement(sql);
                //给占位符(?)赋值
                pstmt.setString(1,"王五");
                pstmt.setDouble(2,3000);
                //执行sql语句
                int count = pstmt.executeUpdate();
                System.out.println(count);
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                //释放资源
                JDBCUtils.close(pstmt,conn);
            }
        }
    }

      

  • 相关阅读:
    视频笔记
    【LeetCode】给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
    getopt函数用法
    一些常用的算法库
    c语言结构体
    C语言中time_t数据类型详细介绍
    c语言 static的用法
    C语言中extern的用法
    MATLAB textread函数
    正则表达式
  • 原文地址:https://www.cnblogs.com/bear7/p/12453282.html
Copyright © 2011-2022 走看看