代码改变世界

jdbc+common_dbutil实现增删改查

  默默不语  阅读(262)  评论(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();
        }
        
    }

}
复制代码

 

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-03-25 系统质量属性之——性能
2019-03-25 《信息技术手册查重错误比对分析》开发记录7
点击右上角即可分享
微信分享提示