package day01;
import java.sql.Connection;
import java.sql.Date;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import entity.Emp;
import util.DBUtil;
import util.DataUtil;
/**
*@author chenmeiqi
*@version 2020年3月18日 上午11:39:55
*/
public class Demo07 {
public static void main(String[] args) throws ParseException {
//common-dbutil的使用
//1.加载驱动
DbUtils.loadDriver("oracle.jdbc.OracleDriver");
//2.使用连接池获取数据源dataSource
ComboPooledDataSource cpds = new ComboPooledDataSource();//向上造型
cpds.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");
cpds.setUser("scott");
cpds.setPassword("Oracle11g");
//cpds.setMaxPoolSize(5);
// Connection conn = null;
try {
// conn = cpds.getConnection();
//通过dataSource来创建一个sql执行器
//pmdKnownBroken:检查可变参数和sql中可替换参数个数是否相等
//如果有dataSource参数,则这个QueryRunner已经管理了某个数据源
QueryRunner qr = new QueryRunner(cpds);
//4.真正去执行
//查询
// String sql = "select empno id,ename name,hiredate rzrq from emp where job=? and deptno=?";
// 传参
// Object[] params = new Object[] {"SALESMAN",30};
// //ResultSetHandler接受结果集
// //注:以下写法取不到值,因为并没有循环ResultSet遍历赋值给实体类,所以要求数据库字段名和实体类的属性名,否则无法自动为我们赋值
// List<Emp> emps = qr.query(sql, params, new BeanListHandler<Emp>(Emp.class));
// for(Emp emp:emps) {
// System.out.println(emp.toString());
// }
//增
// DataUtil dateUtil = new DataUtil();
// String sql = "insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values (?,?,?,?,?,?,?,?)";
// Object[] param = new Object[] {0001,"chenmeiqi","开发",7839,dateUtil.utilToSql("2020-3-21"),5000,1000,30};
// int rows = qr.update(sql, param);
// System.out.println("影响行数:"+rows);
//删
// String sql = "delete from emp where empno=?";
// int rows = qr.update(sql, 1);
// System.out.println("影响行数:"+rows);
//改
String sql = "update emp set sal=?,comm=? where empno=?";
Object[] param = new Object[] {6000,2000,7839};
int rows = qr.update(sql, param);
System.out.println("影响行数:"+rows);
// Object[] param = new Object[] {0001,"chenmeiqi","开发",7839,dateUtil.utilToSql("2020-3-21"),5000,1000,30};
// int rows = qr.update(sql, param);
// System.out.println("影响行数:"+rows);
// qr.batch(sql, params);
//如果没有dataSource参数,则这个QueryRunner没有关联数据源,那么真正执行查询的时候再进行关联
// QueryRunner qr = new QueryRunner(cpds);
// qr.batch(conn, sql, params)
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}