Druid連接池的工具類+C3P0連接池的工具類

Druid連接池的工具類

導入jar包

druid-1.0.9.jar

定義配置文件

druid.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///school
username=root
password=123456
initialSize=5
maxActive=10
maxWait=3000
Druid工具類

DruidUtils.java

package com.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

// Druid工具類
public class DruidUtils {
    // 定義成員變量
    private static DataSource ds;

    static {
        try {
            // 加載配置文件
            Properties pro = new Properties();
            ClassLoader classLoader = DruidUtils.class.getClassLoader();
            InputStream is = classLoader.getResourceAsStream("druid.properties");
            pro.load(is);
            // 獲取連接池對象
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    // 獲取連接池
    public static DataSource getDataSource() {
        return ds;
    }
    
    // 獲取連接
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }

    // 釋放資源
    public static void close(Statement stmt, Connection conn) {
        close(null, stmt, conn);
    }

    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();
            }
        }
    }
}
Druid工具類的測試

DruidDemo.java

package com.datasource.demo;

import com.utils.DruidUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DruidDemo {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        
        try {
            // 獲取連接
            conn = DruidUtils.getConnection();
            // 定義sql
            String sql = "insert into student values (? , ?, ?, ?)";
            // 獲取執行sql的對象
            pstmt = conn.prepareStatement(sql);
            // 設置參數
            pstmt.setString(1,"08005");
            pstmt.setString(2, "孫七");
            pstmt.setString(3, "男");
            pstmt.setInt(4, 18);
            // 執行sql
            count = pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 釋放資源
            DruidUtils.close(pstmt, conn);
        }
    }
}

C3P0連接池的工具類

導入jar包

c3p0-0.9.5.2.jar
mchange-commons-java-0.2.12.jar

定義配置文件

c3p0-config.xml

<c3p0-config>
  <!-- 使用默認的配置讀取連接池對象 -->
  <default-config>
   <!--  連接參數 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql:///school</property>
    <property name="user">root</property>
    <property name="password">123456</property>
    
    <!-- 連接池參數 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">10</property>
    <property name="checkoutTimeout">3000</property>
  </default-config>

  <named-config name="otherc3p0"> 
    <!--  連接參數 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql:///school</property>
    <property name="user">root</property>
    <property name="password">123456</property>
    
    <!-- 連接池參數 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">8</property>
    <property name="checkoutTimeout">1000</property>
  </named-config>
</c3p0-config>
C3P0工具類

C3P0Utils.java

package com.utils;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class C3P0Utils {
    // 定義成員變量
    private static DataSource ds;

    static {
        // 默認加載配置文件
        // 獲取連接池對象
        ds = new ComboPooledDataSource();
    }

    // 獲取連接池
    public static DataSource getDataSource() {
        return ds;
    }

    // 獲取連接
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }

    // 釋放資源
    public static void close(Statement stmt, Connection conn) {
        close(null, stmt, conn);
    }

    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();
            }
        }
    }
}
C3P0工具類的測試

C3P0Demo.java

package com.datasource.demo;

import com.utils.C3P0Utils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class C3P0Demo {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            // 獲取連接
            conn = C3P0Utils.getConnection();
            // 定義sql
            String sql = "select * from student";
            // 獲取執行sql的對象
            pstmt = conn.prepareStatement(sql);
            // 執行sql
            rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getString("sno") + "--" + rs.getString("sname")
                        + "--" + rs.getString("ssex") + "--" + rs.getString("sage"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 釋放資源
            C3P0Utils.close(pstmt, conn);
        }
    }
}


/*
  08001--張三--男--18
  08002--李四--女--20
  08003--王五--男--22
  08004--趙六--女--24
  08005--孫七--男--18
*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章