一:连接池状态
数据库连接池就是一个普通的XML文件,里面可以有多了连接池标签建立数据库连接。
建立连接后,如果用户在使用一次连接后,不再使用连接,那么连接将一直存在连接池中,等待下一次连接时,则可以直接获取连接并使用。不需要访问数据库服务器。
二:连接池优点
1、减少对数据库的访问请求,提高访问效率
2、
三:数据库连接池的使用
1、创建C3P0数据库连接池
<c3p0-config>
<!--default-config 表示默认配置-->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test?useSSL=true</property>
<property name="user">root</property>
<property name="password">123456</property>
<!--初始化池的大小-->
<property name="initialPoolSize">1</property>
<!--最小连接池数-->
<property name="minPoolSize">2</property>
<!--池增量-->
<property name="acquireIncrement">3</property>
<!--最大连接池数量-->
<property name="maxPoolSize">10</property>
</default-config>
</c3p0-config>
2、创建数据库连接类,实现创建连接池对象、获取数据库连接、获取数据源
//创建连接池对象
static ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
//获取数据库连接
static Connection getConn() throws SQLException {
return comboPooledDataSource.getConnection();
}
//获取数据源
public static DataSource getSource(){
return comboPooledDataSource;
}
3、创建数据库业务操作对象
//创建数据库业务操作对象
static QueryRunner queryRunner = new QueryRunner(DBHelp.getSource());
四:数据库连接业务操作对象的方法
1、查询query
//预编译SQL语句
String sql="select * from emp where ename=? and eage=?";
//添加处理问号参数
Object [] obj={emp.getEname(),emp.getEage()};
// 返回的数据对象,泛型为类型,括号为对象本类
Emp query = queryRunner.query(sql, new BeanHandler<Emp>(Emp.class), obj);
2、增删改excute
//预编译SQL
String sql="update emp set ename=?,eage=?,email=?,did=? where eid=?";
//处理参数
Object [] obj={emp.getEname(),emp.getEage(),emp.getEmail(),emp.getDid(),emp.getEid()};
//返回
return queryRunner.execute(sql,obj);