1、ResultSetMetaData meta = rs.getMetaData();
2、通过ResultSetMetaData可以获得结果有几列、各列名、各列别名、各列类型等。

3、可以将ResultSet放入Map(key:列名 value:列值)。

具体代码如下:

package cn.itcast.jdbc;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.junit.Test;/*** 测试结果集元信息*/
public class ResultSetMetaDataTest {/*** 测试从数据库中读取数据* @throws SQLException*/@Testpublic void testRead() throws SQLException {List<Map<String, Object>> datas = read("select id, name as n, birthday from user where id < 5");System.out.println(datas);}/*** 获取数据* @param sql* @return* @throws SQLException*/static List<Map<String, Object>> read(String sql) throws SQLException {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = JdbcUtils.getConnection();ps = conn.prepareStatement(sql);rs = ps.executeQuery();ResultSetMetaData rsmd = rs.getMetaData();int count = rsmd.getColumnCount();//返回结果集中的列数String[] colNames = new String[count];for(int i = 1; i <= count; i ++) {//这里可以正确打印出MySQL的数据类型System.out.print(rsmd.getColumnClassName(i) + "\t");System.out.print(rsmd.getColumnType(i) + "\t");System.out.print(rsmd.getColumnTypeName(i) + "\t");//获取列名System.out.print(rsmd.getColumnName(i) + "\t");//获取列的别名System.out.println(rsmd.getColumnLabel(i));//将查询的列的别名封装进数组中colNames[i - 1] = rsmd.getColumnLabel(i);}List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();while(rs.next()) {//用于存储每一行的数据Map<String, Object> data = new HashMap<String, Object>();for(int i = 0; i < colNames.length; i++) {data.put(colNames[i], rs.getObject(colNames[i]));}datas.add(data);}return datas;} finally {JdbcUtils.free(rs, ps, conn);}}}

测试结果:

java.lang.Integer 4 INT id id
java.lang.String 12 VARCHAR name n
java.sql.Date 91 DATE birthday birthday
[{birthday=2017-06-30, id=1, n=zhangsan}, {birthday=2017-06-06, id=2, n=lisi}, {birthday=2017-05-30, id=3, n=wangwu}, {birthday=1987-01-01, id=4, n=name1}]

JDBC之ResultSetMetaData相关推荐

  1. JDBC 之ResultSetMetaData获取列名字

    ResultSetMetaData 功能结束: 整个数据库的信息:表名.表的索引.数据库产品的名称和版本.数据库支持的操作(增.删.改.查等等) 获取列名 获取列名字有两种方式 (1)getColum ...

  2. 【Java】14 JDBC编程学习总结

    文章目录 一.JDBC是什么? 二.为什么要使用JDBC? 三.DDL.DML.DCL分别代表什么 四.JDBC有三个操作步骤 实例代码 实例代码 实例代码 五.使用PreparedStatement ...

  3. JDBC,你真的知道怎么用吗?

    目录 1 JDBC API 简介 1.1 建立数据源连接 1.2 执行SQL语句 1.3 检索SQL执行结果 1.4 关闭连接 1.5 使用JDBC操作数据库 2 JDBC API中的类与接口 2.1 ...

  4. 通过xalan实现关系型数据库到XML的数据交换

    通过xalan实现关系型数据库到XML的数据交换 内容: 前言 传统的DB-XML数据交换方式 Xalan-java制订的关于SQL的XSLT扩展库详解 驾驭xalan,轻松实现关系型数据库到XML的 ...

  5. 游戏服务器框架之关于玩家数据的解决方案

    游戏系统的数据可以分为两大类.一类是由策划童鞋配置的玩法规则,称为策划数据或配置数据:一类是保存玩家或公共信息的数据,称为用户数据.一般说来,策划数据只能由程序读取而不能修改,而用户数据则增删查改都会 ...

  6. 01_数据库连接池,数据源,ResultSetMetaData,jdbc优化

     一.数据库连接池 1. 什么是连接池 传统的开发模式下,Servlet处理用户的请求,找Dao查询数据,dao会创建与数据库之间的连接,完成数据查询后会关闭数据库的链接. 这样的方式会导致用户每 ...

  7. Java--通过JDBC元数据获取表结构(ResultSetMetaData元数据的使用)

    最近在线上联调,由于我们没有数据库的可视化工具,和其他公司比对数据和表结构总是十分麻烦.后来我看到组长通过元数据来获取表结构和值.之后我自学了一下,感觉十分方便,分享给大家. jdbc的元数据有两类. ...

  8. Jdbc系列六:ResultSetMetaData类

    一.使用 JDBC 驱动程序处理元数据  Java 通过JDBC获得连接以后,得到一个Connection 对象,可以从这个对象获得有关数据库管理系统的各种信息,包括数据库中的各个表,表中的各个列,数 ...

  9. jdbc ResultSetMetaData获取tableName问题

    1.问题 有一个项目客户提出对已上线项目,不改代码的情况下,并且只能提供是jdbc连接与数据库mysql.oracle两种.对客户的需求做了大量的技术调研,mysql jdbc驱动可以使用自定义拦截器 ...

最新文章

  1. struts2 no extension(excludePattern)
  2. The Clean Architecture
  3. WIN下Nginx缓存加速配置方法
  4. 弹窗页面交互_UI进阶知识-信息提交类弹窗该如何设计?
  5. 收到计算机系统公司退款会计分录,企业账户收到退款,怎么做账务处理?
  6. 一文捋清Android消息机制
  7. 语言软件生成outsid_常用的C语言开发工具有哪些
  8. HDU4841 圆桌问题【约瑟夫环+模拟+STL】
  9. Uva 12063 Zero and Ones
  10. 重磅!激光SLAM算法及框架概述
  11. 0中断优先级_51单片机中断基本概念
  12. tl-wn821n无线网卡驱动 linux,tl-wn821n无线网卡驱动下载
  13. VMware虚拟机安装Windows 10 详细教程
  14. struts2框架入门(基于maven)
  15. 高射炮打蚊子丨在VS 2017里用C语言写经典的冒泡排序
  16. oracle产生连续的数字
  17. 甘超波:NLP抽离与结合
  18. 嵌入式Linux入门-输入系统应用编程(鼠标、键盘、触摸屏)
  19. 2020年Web前端学习网站导航
  20. Intellij IDEA 打包jar的多种方式

热门文章

  1. 315曝光 百度手机卫士大数据解析伪基站新骗术
  2. 动态GIF图如何制作?如何使用图片合成GIF功能?
  3. MySql练习 多对多表练习-用户角色权限表
  4. 怎么手写转文字?借助这3款工具轻松实现
  5. mysql查询课程1比课程2低的,小菜菜mysql练习解读分析2——查询存在quot; 01 quot;课程但可能不存在quot; 02 quot;课程的情况(不存在时显示为 null ),m...
  6. LWN:NVIDIA 与 nouveau!
  7. android 好玩的软件推荐,推荐几个好玩的App给你(6)
  8. Android Jetpack总览
  9. Java23种设计模式之适配器模式(Adapter)
  10. 一种基于物联网技术的能源物联网数据服务平台