JDBC連接池&DBUtils


JDBC連接池

DBCP:Apache推出的Database Connection Pool

使用步驟:

> 添加jar包  commons-dbcp-1.4.jar  commons-pool-1.5.6.jar

l  創建DBCP連接池工具類

n  規范接口:javax.sql.DataSource接口

n  實現類:BasicDataSource, 重寫接口中的方法getConnection()

使用讀取配置文件的方式(加案例)

DBCP中有一個工廠類BasicDataSourceFactory

工廠類中有一個靜態方法

static DataSource createDataSource(Properties prop)

此方法返回的就是DataSource接口的實現類對象BasicDataSource

創建Propertis集合+IO技術讀取配置文件

把配置文件傳入BasicDataSourceFactory靜態方法createDataSource中

public class DBCPUtilsReadConfig {

    private static DataSource dataSourse;

    static{

        try {

           InputStream is = DBCPUtilsReadConfig.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");

           //創建Propertis集合

           Properties pro=new Properties();

           pro.load(is);

           //把配置文件傳入BasicDataSourceFactory靜態方法createDataSource

           dataSourse = BasicDataSourceFactory.createDataSource(pro);

        } catch (Exception e) {

           throw new RuntimeException("讀取配置文件失敗");

    }      

  }

    //創建獲取數據庫連接對象的方法

    public static Connection getConnection(){

        try {

           return dataSourse.getConnection();

        } catch (SQLException e) {

           throw new RuntimeException(e+"連接數據庫失敗");

        }

    }

    public static void  close(ResultSet rs,Statement stat,Connection conn){

        if(rs!=null){

           try {

               rs.close();

           } catch (SQLException e) {

               e.printStackTrace();

           }

        }

        if(stat !=null){

           try {

               stat.close();

           } catch (SQLException e) {

               e.printStackTrace();

           }

        }

        if(conn != null){

           try {

               conn.close();

           } catch (SQLException e) {

               e.printStackTrace();

           }

        }

    }

}

 

C3P0連接池

C3P0開源免費的連接池!目前使用它的開源項目有:Spring、Hibernate等。使用第三方工具需要導入jar包,c3p0使用時還需要添加配置文件 c3p0-config.xml

 

創建C3P0連接池的工具類

連接的規范接口:javax.sql.DataSource接口

接口的實現類對象ComboPooledDataSource

成員位置創建ComboPooledDataSource對象

C3P0內部會自動掃描並解析xml文件,給ComboPooledDataSource設置數據量的4大連接信息

創建一個靜態方法返回Connection對象

創建一個靜態方法釋放資源

publicclass C3P0UtilsReadXML {

    privatestatic ComboPooledDataSource dataSource = new ComboPooledDataSource();

    //使用靜態代碼塊給ComboPooledDataSource設置4大數據量連接信息

    /*static{

        try {

           dataSource.setDriverClass("com.mysql.jdbc.Driver");

            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");

           dataSource.setUser("root");

           dataSource.setPassword("root");

        } catch (Exception e) {

           throw new RuntimeException("設置連接信息失敗!");

        }

    }*/

    // 創建一個返回ComboPooledDataSource的方法

    publicstatic DataSource getDataSource(){

        returndataSource;

    }

    // 創建一個靜態方法返回Connection對象

    publicstatic Connection getConnection() {

        try {

           returndataSource.getConnection();

        } catch (SQLException e) {

           thrownew RuntimeException(e + "獲取數據庫連接失敗");

        }

    }

 

    // 定義一個釋放資源的方法

    publicstaticvoid close(ResultSet rs, Statement stat, Connection conn) {

        if (rs != null) {

           try {

               rs.close();

           } catch (SQLException e) {

               e.printStackTrace();

           }

        }

        if (stat != null) {

           try {

               stat.close();

           } catch (SQLException e) {

               e.printStackTrace();

           }

        }

        if (conn != null) {

           try {

               conn.close();

           } catch (SQLException e) {

               e.printStackTrace();

           }

        }

    }

}

使用DBUtils工具類對數據庫表進行增刪改查

DBUtils工具類作用:簡化JDBC的開發(6步)

DBUtils有3個核心類

1.QueryRunner:使用QueryRunner中的方法對數據庫進行增刪改查

2.DbUtils:提供了大量的釋放資源的方法

3.ResultSetHandler接口:提供了處理查詢結果集的方法

QueryRunner類

構造方法:

QueryRunner() 空參數構造方法

調用更新和查詢方法的時候,需要傳入Connection對象

QueryRunner(DataSource ds) 帶DataSource數據庫連接池的構造方法

調用更新和查詢方法的時候QueryRunner會自動從DataSource實現類對象中獲取數據庫連接對象,使用完畢會自動歸還

成員方法:

執行執行增刪改的成員方法

int update(Connection conn, String sql, Object... params)用來執行增刪改的SQL

int update(String sql, Object... params) 用來執行增刪改的SQL      

參數:

Connection conn:數據庫連接對象

String sql:拼接的sql語句,可以使用?占位符

Object... params:?占位符的實際參數,可以使用Object[]

返回值:

int:執行的有效行數

執行執行查詢的成員方法

<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)

<T> T query(String sql, ResultSetHandler<T> rsh, Object... params)     

參數:      

Connection conn:數據庫連接對象

String sql:拼接的sql語句,可以使用?占位符

Object... params:?占位符的實際參數,可以使用Object[]

ResultSetHandler<T> rsh:用來存儲查詢之后的結果集,可以傳入ResultSetHandler9種實現類對象

返回值:

<T> T:傳入的ResultSetHandler實現類不同,返回的結果集也不同,使用泛型,傳入什么結果集,就返回對應的類型


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM