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

 

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM