数据库连接池

数据库连接池

概念:存放数据库连接的容器
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器

c3p0

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

拷贝jar文件 c3p0-0.9.1.2.jar

不使用配置文件方式

	Connection conn = null;
	PreparedStatement ps = null;
	try {
		//1. 创建datasource
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		//2. 设置连接数据的信息
		dataSource.setDriverClass("com.mysql.jdbc.Driver");
		
		dataSource.setJdbcUrl("jdbc:mysql://localhost/bank");
		dataSource.setUser("root");
		dataSource.setPassword("root");
		
		//2. 得到连接对象
		conn = dataSource.getConnection();
		
		String sql = "insert into account values(null , ? , ?)";
		ps = conn.prepareStatement(sql);
		ps.setString(1, "admi234n");
		ps.setInt(2, 103200);
		
		ps.executeUpdate();
		
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		JDBCUtil.release(conn, ps);
	}

使用配置文件方式

c3p0的配置文件 支持 properties , 也支持 xml 方式。 不过开发中,一般使用xml方式来配置

src下, 创建xml文件,名为:c3p0-config.xml  注意此处,名字需要固定。

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<default-config>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/bookstore
		
		</property>
		<property name="user">root</property>
		<property name="password">root</property>
		<!-- 初始化连接池数量 -->
		<property name="initialPoolSize">10</property>
		
		<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
		<property name="maxIdleTime">60</property>

		<!--连接池中保留的最大连接数。Default: 15 -->
		<property name="maxPoolSize">25</property>
		
		<!--连接池中保留的 最小连接数.Default: 3 -->
		<property name="minPoolSize">10</property>
	</default-config>
</c3p0-config>

	

使用c3p0的JDBCUtil类

public class JdbcDemo5 {
    public static void main(String[] args) {
        List<Emp> list=new JdbcDemo5().findAll();
        System.out.println(list);
    }
    public List<Emp> findAll() {
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        List<Emp> list=null;
        try {
           /* //注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //获取数据库的连接对象
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?serverTimezone=GMT%2B8\n", "root", "root");
            */
            conn=JDBCUtils.getConnection();
            //定义sql语句
            String sql = "select*from stu";
            //获取执行mysql的对象Statement
            stat = conn.createStatement();
            //执行sql
            rs = stat.executeQuery(sql);
            //遍历结果集,封装对象,装载集合
            Emp emp=null;
            list=new ArrayList<>();
            //处理结果,获取数据
            while (rs.next()) {
                //让游标向下移动一行
                int id = rs.getInt(1);
                String name = rs.getString("name");
                double math = rs.getDouble("math");
                double english=rs.getDouble("english");
                //创建emp对象
                emp=new Emp();
                emp.setId(id);
                emp.setName(name);
                emp.setMath(math);
                emp.setEnglish(english);
                list.add(emp);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
           JDBCUtils.close(rs,stat,conn );
        }
        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值