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(); } } }