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