package StatementTest;

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

import connection.ConnectionPool;
import connection.ConnectionProvider;

public class PreparedStatementTest {
/*创建连接池+DataSource操作*/
    private  static ConnectionPool connectionPool;

/*创建线程池+ThreadLocal<T>操作*/
    
    //创建线程池
    private static ThreadLocal<Connection> conWrapper = new ThreadLocal<Connection>();
    //打开连接
    private Connection getConnection() throws Exception{
        Connection con = connectionPool.getConnection();
        if(con != null || !con.isClosed()){
            return con;
        }
        //从线程池中获取数据库连接
        con = connectionPool.getConnection();
        if(con == null){
            throw new SQLException("无法获取数据库连接"); 
        }
        //对新创建的数据库连接放到线程池中
        conWrapper.set(con);
        return con;
    }
    //关闭连接
    private void closeConnection() throws SQLException{
        //从线程池中获取连接池
        Connection con = conWrapper.get();
        if(con != null){
            con.close();
        }
        conWrapper.remove();
    }

}