Java C3P0连接池

  最近有用到C3P0连接池。
  c3p0 就是一个 数据库连接池 ,利用 sqljdbc4 建立与数据库的连接 , 并且管理这些连接,不用每次访问数据库都 重新发出数据库连接请求,只需要在c3p0的连接池中拿一个过来就 可以了,这样可以大大的提高性能。
代码如何:
  
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class maintest {
	 public static void main(String[] args) {  
	        Connection conn = null;  
	        java.sql.Statement st = null;  
	        ResultSet rs = null;  
	         ComboPooledDataSource ds=null;
	         ds=new ComboPooledDataSource();
	        // 与mysql数据库建立连接  
	        try {  
	        	conn=ds.getConnection(); 
	        } catch (SQLException e) {  
	            System.out.println("数据库链接错误");  
	            e.printStackTrace();  
	        }  
	        // 创建Statement  
	        try {  
	            st = conn.createStatement();  
	            // 创建一个JDBC声明  
	            for (int i = 1; i < 7; i++) {                 
	                    String sql = "INSERT INTO test (name) VALUES('dsads')";  
	                    st.executeUpdate(sql);  
	            }  
	        } catch (SQLException e1) {  
	            System.out.println("数据操作错误");  
	            e1.printStackTrace();  
	        }  
	        // 关闭数据库  
	        try {  
	            if (rs != null) {  
	                rs.close();  
	                rs = null;  
	            }  
	            if (st != null) {  
	                st.close();  
	                st = null;  
	            }  
	            if (conn != null) {  
	                conn.close();  
	                conn = null;  
	            }  
	        } catch (Exception e) {  
	            System.out.println("数据库关闭错误");  
	            e.printStackTrace();  
	        }  
	    }  
}

这个是我自己写的测试的 其中C3P0的配置文件的 代码我就不贴了网上很多。配置的具体什么意思网上也挺多的大家自己看看。中间又要解释的就是 你要把你的配置文件的名字放到和类在一个目录下,而且名字必须是c3p0.properties,否则你就要自己读出properties文件中配置的信息。
我对C3P0的关闭不是很理解后来在网上看到说是:
使用完后必须 con.close() 掉,使用连接池的话,执行 con.close 并不会关闭与数据库的 TCP 连接,而是将连接还回到池中去,如果不 close 掉的话,这个连接将会一直被占用,直接连接池中的连接耗尽为止。
从连接池获取的连接connection跟JDK中的connection有点不同,前者的close方法并没有关闭与数据库的连接,而是将连接返回到池中,这样就可以复用了。如果不调用close方法的话拿就失去了使用连接池的意义了。



你可能感兴趣的:(java,c3p0,java)