MySQL數據庫 C3P0 鏈接池

鏈接池的規範接口
 
鏈接池的原理
登陸和註冊
 
package cn.kgc.c3p0;
 
import com.mchange.v2.c3p0.ComboPooledDataSource;
 
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class UtilsC3P0 {
    /**
     * 建立C3P0工具類 使用C3P0得到鏈接對象
     * 鏈接池有一個規範接口 javax.sql.DateSource接口
     * 定義了一個從鏈接池中得到鏈接的方法
     * getConnection()
     * 步驟
     * 0.   導入jar包
     * 1.   在成員位置建立一個靜態ComboPooledDataSource對象
     * 2.   在靜態代碼塊使用ComboPooledDataSource對象
     *      setXxx方法設置數據庫鏈接
     * 3.   定義一個靜態方法ComboPooledDataSource對象中得到數據庫鏈接Connection
     * 4.   釋放資源
     */
    //1.在成員位置建立一個靜態ComboPooledDataSource對象
    private static ComboPooledDataSource dataSource=new ComboPooledDataSource();
    //2.在靜態代碼塊中使用ComboPooledDataSource對象的setXxx方法 設置數據庫鏈接
    static {
        try {
            //設置註冊驅動
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            //url
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/day4");
            //數據庫用戶名
            dataSource.setUser("root");
            //數據庫密碼
            dataSource.setPassword("123456");
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
    }
    //3.定義一個靜態方法ComboPooledDataSource對象中得到數據庫鏈接Connection
    public static Connection getConnection(){
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException("數據庫鏈接失敗"+e);
        }
    }
    //4.釋放資源
    public static void close(ResultSet rs, Statement state,Connection conn){
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (state!=null){
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null){
            try {
                conn.close();//歸還
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
 
 
 
 
 
 
 
package cn.kgc.c3p0;
 
import com.mchange.v2.c3p0.cfg.C3P0Config;
import org.junit.Test;
 
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class TestUtilsC3P0 {
    @Test
    public void test01() throws SQLException {
        //使用c3p0工具類得到getConnection
        Connection conn = UtilsC3P0.getConnection();
        System.out.println(conn);
        //得到執行者對象
        Statement state = conn.createStatement();
        //執行SQL語句
        ResultSet rs = state.executeQuery("SELECT * FROM users");
        while (rs.next()){
            System.out.println(rs.getInt("uid")+" "+rs.getString("username")+" "+rs.getString("password"));
        }
        //關閉資源
        UtilsC3P0.close(rs,state,conn);
    }
}
相關文章
相關標籤/搜索