JDBC初学(二):JDBC池

    池:内存空间
 * 连接池:存放连接资源的一个容器
 * 
 * 为什么要用连接池:
 * 每次访问数据库都要创建一个新的连接,频繁的创建和关闭连接会耗费时间而且耗费资源,因此会导致程序执行的效率低下。

导入c3p0连接池的使用

  • 1.导入c3P0的开发包(jar包)
  • 2.在程序中创建一个连接池对象(容器:里面会存放一批连接)
  • 3.设置连接数据库的基本信息(驱动类的全路径,连接的库的URL地址,连接的库的用户名和密码)
  • 方式一:直接将连接参数写死在程序中,如果将来有变化,就需要改程序,会带来很多不必要的麻烦
  • 方式二:将连接数据库的基本信息配置在c3p0.properties 文件,文件放在src根目录下
  • 方式三:将连接数据库的基本信息配置在c3p0-config.xml文件中,文件放在src根目录下
  • 方式二和方式三中的文件名都是固定的,不能改变,因为c3p0程序会自动读取这些问题
  • 4.从连接池中获取一个连接对象进行使用
  • 5.将连接还回到连接池中

第一步:
在这里插入图片描述
在官网下载c3p0-0.9.1.2.jar包,复制到lib(右键新建folder,命名为lib)库中,右键buildpath->add to the path;
在这里插入图片描述
之后在你的库中会出现一个奶瓶图案的同名jar包

第二部创建链接:代码如下:

public class TestC3p0 {
    
    

	
	static ComboPooledDataSource pool=new ComboPooledDataSource();
//	//设置连接数据库的基本信息(方式一:不推荐使用)
//	static {
    
    
//		try {
    
    
//			pool.setDriverClass("com.mysql.jdbc.Driver");//设置驱动类
//			pool.setJdbcUrl("jdbc:mysql://localhost:3306/jt_db?characterEncoding=utf-8");
//			pool.setUser("root");
//			pool.setPassword("root");
//		} catch (PropertyVetoException e) {
    
    
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
	
	@Test
	public void testFindAll() throws SQLException {
    
    
		//
		
		
		//注册驱动,并获取连接(创建一个新对象
		//Connection conn=jdbcUtil.getConn();
		//改为从连接池中获取一条连接
		Connection conn=pool.getConnection();
		
		
		//获取传输器
		String sql="select * from user";
		PreparedStatement ps=conn.prepareStatement(sql);
		//执行sql语句,返回执行接货
		ResultSet rs=ps.executeQuery();
		//输出结果
		System.out.println("id\t"+"username\t"+"password\t");
		while(rs.next()) {
    
    
			//System.out.println(rs.getInt("id")+"\t"+rs.getString("username")+"\t\t"+rs.getString("password"));
			System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t\t"+rs.getString(3));
		}
		//释放资源
		rs.close();
		ps.close();
		conn.close();
		/*如果当前这个连接对象,使我们自己创建的一个连接对象,调用conn.close方法默认就是将连接关闭(也就是释放掉)
		 * 如果当前这个连接对象是从连接池中获取过来的,在连接池返回这个连接对象时看,会改造连接对象的功能(方法)
		 * 将conn的close方法还链接到连接池中,而不是将连接关闭。
		 * 
		 */
	}
}

我们上面看到的是创建连接池的第一种方法,
第二种方法为在src里新建一个file文件,重命名为c3p0.prperties
这样,直接就可以运行了,因为程序会自动调用它。

猜你喜欢

转载自blog.csdn.net/qq_45273552/article/details/107071223