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中,请点击

JDBC中的元数据——3.结果集元数据的更多相关文章

  1. OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa

    元数据最本质.最抽象的定义为:data about data (关于数据的数据).它是一种广泛存在的现象,在许多领域有其具体的定义和应用. JDBC中的元数据,有数据库元数据(DatabaseMeta ...

  2. oracle学习笔记(八)——结果集元数据ResultSetMetaData以及ResultSet转为对应的实体类框架

    介绍 可用于获取关于 ResultSet 对象中列的类型和属性信息的对象,在持久框层框架(如:mybatis, hibernate)中被广泛的应用. 常用方法 int getColumnCount() ...

  3. JDBC第三篇--【事务、元数据、改造JDBC工具类】

    这是我JDBC的第一篇 http://blog.csdn.net/hon_3y/article/details/53535798 这是我JDBC的第二篇 http://blog.csdn.net/ho ...

  4. 获取jdbc中resultSet结果集的大小

    当我们执行完一条Sql语句,获取到一个 ResultSet 对象后,有时我们需要立即知道到底返回了多少个元素,但是 ResultSet 并没有提供一个 size() 方法 or length 的属性, ...

  5. JDBC中常用对象介绍

    JDBC中的主要类(接口) 在JDBC中常用的类有: 1.DriverManager 2.Connection 3.Statement 4.ResultSet 1.DriverManager 其实我们 ...

  6. MVC3.0学习笔记之元模型元数据ModelMetaData以及模型元数据提供系统

    模型元数据ModelMetaData是MVC中很重要的概念,它包括但不仅限于 模型的类型,模型包含了哪些属性,属性都是什么类型的,属性上都有什么特性. ASP.NET MVC3.0 提供了默认的模型元 ...

  7. JDBC中的Statement和PreparedStatement的区别

    JDBC中的Statement和PreparedStatement的区别  

  8. [转]JDBC中日期时间的处理技巧

    Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...

  9. JDBC中的事务-Transaction

    事务-Transaction 某些情况下我们希望对数据库的某一操作要么整体成功,要么整体失败,经典的例子就是支付宝提现.例如我们发起了支付宝到银行卡的100元提现申请,我们希望的结果是支付宝余额减少1 ...

随机推荐

  1. HelloWord!

    HelloWorld 1.新建一个文件夹,存放代码 2.新建一个java文件后缀为.java Hello.java (注意后缀 如系统没打开显示后缀需要打开) 3.编写HelloWorld代码 (建议 ...

  2. 【排序+模拟】魔法照片 luogu-1583

    题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...

  3. powerdesigner连接postgresql数据库生成pdm及word文档

    1.准备软件: powerdesigner165与postgresql的驱动:psqlodbc_11_01_0000 2.安装并破解完成powerdesigner165 参看链接:https://ww ...

  4. sql语句优化原理

    前言 网上有很多关于sql语句优化的文章,我这里想说下为什么这样...写sql语句,能够提高查询的效率. 1 sql语句优化原理 要想写出好的sql,就要学会用数据库的方式来思考如何执行sql,那么什 ...

  5. 前端基础html(二)

    一.html的概念 1.概念:超文本标记语言. 2.超文本,超链接:超级不仅有文本,图片,还有音频,视频等. 3.html:作用:   显示服务器端的响应结果. 二.互联网三大基石 1.url:统一资 ...

  6. java 利用Calendar进行日期更改

    //建立1个日期实例 Date tomorrow= new Date(); //获取今天日期 Date nowDate = Calendar.getInstance().getTime(); // 构 ...

  7. Flask 之linux部署

    1.装python > `[root ~]# yum install gcc [root ~]# wget https://www.python.org/ftp/python/3.6.5/Pyt ...

  8. jvm源码解读--06 Method 方法解析

    进入 // Methods bool has_final_method = false; AccessFlags promoted_flags; promoted_flags.set_flags(0) ...

  9. Spring Cloud专题之五:config

    书接上回: SpringCloud专题之一:Eureka Spring Cloud专题之二:OpenFeign Spring Cloud专题之三:Hystrix Spring Cloud 专题之四:Z ...

  10. QT常用控件(一)——菜单栏和对话框

    引言 QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar).多个工具栏(tool bars).多个锚接部件(dock widgets).一个状态栏(status ...