JDBC连接池和DBUtils(4)

public class Demo01DBUtils {
    //创建QueryRunner对象,构造方法中传入连接池的实现类对象
    QueryRunner qr = new QueryRunner(C3P0UtilsReadXML.getDataSource());
   
    /*
    * 使用QueryRunner,对数据库表进行删除数据
    */
    @Test
    public void delete(){
        try {
            //拼接增加的sql语句
            String sql = "DELETE FROM category WHERE cid=?";
            //调用QueryRunner中update方法执行sql语句
            //创建对象数据,储存?占位符的实际参数
            //Object[] parmars = {"洗",10};
            int row = qr.update(sql, 7);
            System.out.println(row);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 使用QueryRunner,对数据库表进行修改数据
    */
    @Test
    public void update(){
        try {
            //拼接增加的sql语句
            String sql = "UPDATE category SET cname=? WHERE cid=?";
            //调用QueryRunner中update方法执行sql语句
            //创建对象数据,储存?占位符的实际参数
            Object[] parmars = {"洗",10};
            int row = qr.update(sql, parmars);
            System.out.println(row);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 使用QueryRunner,对数据库表进行增加(插入)数据
    */
    @Test
    public void insert(){
        try {
            //拼接增加的sql语句
            String sql = "INSERT INTO category(cname) VALUES(?)";
            //调用QueryRunner中update方法执行sql语句
            int row = qr.update(sql, "玩具");
            System.out.println(row);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

使用QueryRunner对数据库表进行查询的九种查询方式

/*
 * 使用QueryRunner对数据库表进行查询
 * <T> T query(String sql, ResultSetHandler<T> rsh, Object... params)   
 */
public class Demo02DBUtils {
    //创建QueryRunner对象,构造方法中传入数据库连接池的实现类
    QueryRunner qr = new QueryRunner(C3P0UtilsReadXML.getDataSource());
   
    /*
    * 第九种查询方式:使用KeyedHandler(Map嵌套Map)
    * KeyedHandler会把结果集的每一行数据封装到Map集合中
    *    key:字符串类型列名
    *    value:列名对应的值(不同的列,数据类型不同,value使用Object类型)
    * 多个Map集合存储到另外一个Map集合中
    *    key:指定的字符串列名,不指定则默认使用第一列
    *    value:传入存储每行数据的Map集合
    *
    * 构造方法:
    *    KeyedHandler() 不指定列名
    *    KeyedHandler(int columnIndex) 指定列号1,2,3,4
    *    KeyedHandler(String columnName) 指定字符串格式列名
    */
    @Test
    public void keyedHandler(){
        try {
            //拼接sql语句
            String sql = "SELECT * FROM category";
            //调用QueryRunner中的query方法,结果集使用KeyedHandler
            //Map<Object,Map<String,Object>> mapmap = qr.query(sql, new KeyedHandler("cid"));
            Map<Object,Map<String,Object>> mapmap = qr.query(sql, new KeyedHandler("cname"));
            //遍历Map集合取出存储每一行数据的Map集合
            for (Object obj: mapmap.keySet()) {
                //根据key取出值存储每一行数据的Map集合
                Map<String,Object> map = mapmap.get(obj);
                //遍历Map集合
                for(String key : map.keySet()){
                    System.out.print(obj+":"+key+"..."+map.get(key)+"\t");
                }
                //打印完每一行数据之后换行
                System.out.println();
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 第八种查询方式:使用ScalarHandler(重点)
    * ScalarHandler用于执行返回单个数据的sql语句
    * 使用聚合函数查询的结果都是单个数据
    * 或者查询某一行的某一个字段
    */
    @Test
    public void scalarHandler(){
        try {
            //拼接sql语句
            String sql = "SELECT SUM(cid) FROM category";
            sql = "SELECT cname FROM category WHERE cid=?";
            //调用QueryRunner中的query方法,结果集使用ScalarHander
            //返回的值的数据类型不确定,使用Object类型
            Object obj = qr.query(sql, new ScalarHandler(),2);
            System.out.println(obj);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 第七种查询方式:使用MapListHandler
    * 1.MapListHandler会把多条数据,存储到多个Map集合中
    *    key:字符串类型列名
    *    value:列名对应的值(不同的列,数据类型不同,value使用Object类型)
    * 2.会把多个Map集合存储List集合中
    */
    @Test
    public void mapListHandler(){
        try {
            //拼接查询sql语句
            String sql = "SELECT * FROM category";
            //调用QueryRunner中的query方法执行查询sql语句,结果集传入MapListHandler
            List<Map<String,Object>> list = qr.query(sql, new MapListHandler());
            //遍历List集合,取出Map集合
            for (Map<String, Object> map : list) {
                //遍历Map集合
                for(String key: map.keySet()){
                    System.out.print(key+"..."+map.get(key)+"\t");
                }
                System.out.println();//打印完每行数据之后换行
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   
    /*
    * 第六种查询方式:使用MapHandler
    * MapHandler把结果集的第一行数据存储Map集合中
    *    key:字符串类型列名
    *    value:列名对应的值(不同的列,数据类型不同,value使用Object类型)
    */
    @Test
    public void mapHandler(){
        try {
            //拼接查询sql语句
            String sql = "SELECT * FROM category";
            //调用QueryRunner中的query方法执行查询sql语句,结果集传入MapHandler
            Map<String,Object> map = qr.query(sql, new MapHandler());
            //使用keySet遍历Map集合
            Set<String> set = map.keySet();
            for (String key : set) {
                //通过key使用get方法获取value
                Object value = map.get(key);
                System.out.print(key+"..."+value+" ");
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
   

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/01bdd1d8f1daf69cafde75184d971a2c.html