package metadata;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.List; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; import entity.Student;
import util.SQLUtil; /**
* 结果集元数据:
* @author mzy
*
*/
public class Demo03 {
private static DataSource ds = new ComboPooledDataSource();
public static void main(String[] args) throws Exception {
// easyUse(); // 补充完SQLUtil中的Query方法
List<Student> list = SQLUtil.query("select * from student", null, Student.class);
for(Student student : list) {
System.out.println(student);
}
} private static void easyUse() throws Exception {
Connection conn = ds.getConnection(); String sql = "select * from student";
PreparedStatement stmt = conn.prepareStatement(sql);
/*
* 获取参数元数据:
* 目的是取得我们需要赋值的参数数量;
* 例如如如果我们的查询中有where条件!
*/
ParameterMetaData param = stmt.getParameterMetaData();
int count = param.getParameterCount(); Object[] values = null;
System.out.println(count);
/* // 因为恒无法进入,所以注释掉
if(values != null) { // 当传入的values为空,说明不需要参数
// 有需要赋值的参数的时才进行if中的操作
for(int i=0; i<count; i++) {
stmt.setObject(i+1, values[i]);
}
}
*/
ResultSet rs = stmt.executeQuery();
/*
while(rs.next()) {
// 原来的办法,手动的取出每一行中的数据
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println(id+"\t"+name);
}
*/
// 这里的while中从结果集中取得元素的时候
// 程序并不知道没一行有几个元素
// 所以这里需要结果集元数据,就可以知道一共有几列了
ResultSetMetaData metaData = rs.getMetaData();
int col = metaData.getColumnCount();
while(rs.next()) {
// 遍历每列
for(int i=1; i<=col; i++) {
Object value = rs.getObject(i);
System.out.print(value+"\t");
}
System.out.println();
} conn.close();
}
}

其中部分已经封装到了SQLUtil中,请点击

最新文章

  1. iOS图片模糊效果与阴影效果
  2. OpenSSL命令---pkcs12
  3. 关于foreach中对集合执行Add或者Remove操作引发枚举值被修改异常
  4. 20160816_Redis一些资料
  5. 基于Storm的工程中使用log4j
  6. 6.css文本样式
  7. React Native学习-CameraRoll
  8. CSS3—六边形
  9. eclipse 代码中突然出现特殊字符
  10. HDU -1284钱币兑换
  11. 计算机网络课程优秀备考PPT之第五章网络层(五)
  12. easelJS - Cache_vday
  13. .net 网站应对压力的一些方案总结
  14. vi的常用命令
  15. easyui+ajax获取同表关联的数据
  16. MysqL读写分离的实现-Mysql proxy中间件的使用
  17. SSM项目搭建之配置文件
  18. Mountaineers Gym - 102021M (LCA+MST)
  19. js变量和函数声明的提升
  20. set-----》集合

热门文章

  1. 【剑指offer】42.和为S的两个数字
  2. Linux下Apache(HTTP)基础知识梳理-运维笔记
  3. CF896D Nephren Runs a Cinema
  4. Linux上常用插件的一些命令
  5. canvas点阵函数波动,类似飘带或水波
  6. 【进阶之路】Java的类型擦除式泛型
  7. Mybatis学习笔记-分页
  8. Kotlin强化实战!这份学习手册让你的面试稳如泰山
  9. 一、MinIO的基本概念
  10. How to name a slf4j logger