代码改变世界

jdbc+common_dbutil实现增删改查

2020-03-25 23:56  默默不语  阅读(260)  评论(0编辑  收藏  举报
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();
        }
        
    }

}