代码如下:
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/*
使用C3P0数据库连接池(配置文件方式)对数据库进行查询操作
*/
public class Test02 {
public static void main(String[] args) throws Exception {
/*操作步骤:
导包, 在项目下创建一个lib文件目录,将第三方的jar包导入该目录下,
编写配置文件,要求有固定的格式和固定的名字(c3p0-config.xml和c3p0.properties)该配置文件要放到项目的src目录下,
创建连接池对象,在创建对象时会自动寻找配置文件并加载,参数需要传入需要连接的数据库的名称
编写sql语句,
获取连接,
获取语句执行者
执行语句
对结果进行处理
释放资源(此时的连接对象是归还给连接池,并不是销毁该连接对象)
*/
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource("db3");
Connection connection = comboPooledDataSource.getConnection();
//查询出部门编号、部门名称、部门位置、每个部门的员工人数
String sql ="SELECT d.id,d.dname,d.loc,COUNT(*) FROM emp e JOIN dept d ON e.`dept_id`= d.`id` GROUP BY d.`id`;";
// 查询经理的信息。显示员工姓名,员工工资,职务名称,职务描述,部门名称,部门位置,工资等级
String sql1 = "select e.ename,e.salary,j.jname,j.description,d.dname,d.loc,s.grade from emp e join job j join\n" +
"dept d join salarygrade s on e.`dept_id`=d.`id` and e.`job_id`=j.`id` where j.`jname`=? and\n" +
"e.`salary` between s.`losalary` and s.`hisalary`;";
//查询所有员工信息。显示员工姓名,员工工资,职务名称,职务描述,部门名称,部门位置,工资等级
String sql2 = " SELECT e.ename,e.salary,j.jname,j.description,d.dname,d.loc,s.grade FROM emp e JOIN job j JOIN\n" +
" dept d JOIN salarygrade s ON e.`dept_id`=d.`id` AND e.`job_id`=j.`id` WHERE e.`salary` BETWEEN \n" +
" s.`losalary` AND s.`hisalary`;";
PreparedStatement ps = connection.prepareStatement(sql);
PreparedStatement ps1 = connection.prepareStatement(sql1);
ps1.setObject(1,"经理");
PreparedStatement ps2 = connection.prepareStatement(sql2);
ResultSet resultSet = ps.executeQuery();
ResultSet resultSet1 = ps1.executeQuery();
ResultSet resultSet2 = ps2.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String dname = resultSet.getString("dname");
String loc = resultSet.getString("loc");
int count = resultSet.getInt("count(*)");
System.out.println("id="+id+" dname="+dname+" loc="+loc+" count="+count );
}
System.out.println("===================================================================");
while (resultSet1.next()) {
String ename = resultSet1.getString("ename");
int salary = resultSet1.getInt("salary");
String jname = resultSet1.getString("jname");
String description = resultSet1.getString("description");
String dname = resultSet1.getString("dname");
String loc = resultSet1.getString("loc");
int grade = resultSet1.getInt("grade");
System.out.println("ename="+ename+" salary="+salary+" jname="+jname+" description="+description
+" dname="+dname+" loc="+loc+" grade="+grade);
}
System.out.println("===================================================================");
while (resultSet2.next()) {
String ename = resultSet2.getString("ename");
int salary = resultSet2.getInt("salary");
String jname = resultSet2.getString("jname");
String description = resultSet2.getString("description");
String dname = resultSet2.getString("dname");
String loc = resultSet2.getString("loc");
int grade = resultSet2.getInt("grade");
System.out.println("ename="+ename+" salary="+salary+" jname="+jname+" description="+description
+" dname="+dname+" loc="+loc+" grade="+grade);
}
//释放资源
Utils11.closeResource(resultSet,ps,connection);
Utils11.closeResource(resultSet1,ps1,null);
Utils11.closeResource(resultSet2,ps2,null);
}
}
配置文件概况:
控制台打印效果: