package cn.itcast.batch;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import cn.itcast.JdbcUtils; public class ResultSetMetaData { public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
List<Map<String, Object>> list = read2("select username,password from t_user where id <5 ");
System.out.println(list);
} // 一行数据
public static 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(); java.sql.ResultSetMetaData rsmd = rs.getMetaData(); int count = rsmd.getColumnCount();
String[] colNames = new String[count]; for (int i = 1; i <= count; i++) {
// System.out.println(rsmd.getColumnClassName(i) + " "
// + rsmd.getColumnName(i) + " " + rsmd.getColumnLabel(i));
colNames[i - 1] = rsmd.getColumnName(i); }
Map<String, Object> data = null;
if (rs.next()) {
data = new HashMap<String, Object>();
for (int i = 0; i < colNames.length; i++) {
data.put(colNames[i], rs.getObject(colNames[i]));
}
}
return data;
} finally {
JdbcUtils.free(rs, ps, conn);
}
} // 多行行数据
public static List<Map<String, Object>> read2(String sql)
throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery(); java.sql.ResultSetMetaData rsmd = rs.getMetaData(); int count = rsmd.getColumnCount();
String[] colNames = new String[count]; for (int i = 1; i <= count; i++) {
// System.out.println(rsmd.getColumnClassName(i) + " "
// + rsmd.getColumnName(i) + " " + rsmd.getColumnLabel(i));
colNames[i - 1] = rsmd.getColumnName(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_jdbc_利用结果集元数据将查询结果封装为map_MetaData的更多相关文章

  1. 利用结果集元数据将查询结果封装为map

    package it.cast.jdbc; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql ...

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

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

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

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

  4. JDBC中的元数据——3.结果集元数据

    package metadata; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.Pre ...

  5. 利用kibana插件对Elasticsearch查询

    利用kibana插件对Elasticsearch查询 Elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据. 查询分类: 基本查询:使用Elasticsear ...

  6. Python与数据库[2] -> 关系对象映射/ORM[5] -> 利用 sqlalchemy 实现关系表查询功能

    利用 sqlalchemy 实现关系表查询功能 下面的例子将完成一个通过关系表进行查询的功能,示例中的数据表均在MySQL中建立,建立过程可以使用 SQL 命令或编写 Python 适配器完成. 示例 ...

  7. PXC集群信息查询

    目录 PXC集群信息查询 pxc流量控制 PXC节点状态 PXC集群状态 节点与集群的相关信息 PXC集群事务相关信息 PXC集群信息查询 show status like "%wsrep% ...

  8. MyBatis Plus 将查询结果封装到指定实体

    MyBatis Plus 将查询结果封装到指定实体 思路 自定义方法,使用Wrapper,自定义映射结果集 Mapper接口 package com.mozq.boot.mpsand01.dao; i ...

  9. hibernate将本地SQL查询结果封装成对象

    hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...

随机推荐

  1. guake默认快捷键

    toggle guake visibility   切换guake可见 :F12 toggle fullscreen   切换全屏幕 :F11 quit   退出 :Shift+Ctrl+Q new ...

  2. C#第三方控件的使用

    一.DEVEXPRESS的使用 官网:https://www.devexpress.com/ 入门教程:http://wenku.baidu.com/link?url=2sXEEby1ffx9JTWG ...

  3. ln (link)命令

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  4. 设计模式_Command_命令模式

    形象例子: 俺有一个MM家里管得特别严,没法见面,只好借助于她弟弟在我们俩之间传送 信息,她对我有什么指示,就写一张纸条让她弟弟带给我.这不,她弟弟又传送过来一个COMMAND,为了感谢他,我请他吃了 ...

  5. Android UI -- 布局介绍(布局包括FrameLayout, LinearLayout, RelativeLayout, GridLayout)

    首先介绍常用布局类 FrameLayout 最简单的布局管理器. 这个布局管理类有几个特性: 添加组件默认在左上角的. 如果添加多个组件会叠加到一起,并且都在左上角.(可以通过一gravity属性改变 ...

  6. dataStructure@ Check if a directed graph has cycles

    #include<iostream> #include<cstdio> #include<cstring> #include<limits> #incl ...

  7. HDU-4655 Cut Pieces 数学,贪心

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4655 先不考虑相临的有影响,那么总数就是n*prod(ai),然后减去每个相邻的对总数的贡献Σ( Mi ...

  8. 图解Java字符串不变性

    1. 声明字符串 String s = "abcd"; 这里,s存储了“abcd”在这个字符串对象的引用,如下图所示: 2. 将字符串变量s赋值给字符串变量s2 String s2 ...

  9. 远程测试mysql数据库3306端口报错

    错误现象:[root@localhost ~]# telnet 192.168.10.130 3306Trying 192.168.10.130...Connected to 192.168.10.1 ...

  10. 优化UITableViewCell高度计算的那些事(RunLoop)

    这篇总结你可以读到: UITableView高度计算和估算的机制 不同iOS系统在高度计算上的差异 iOS8 self-sizing cell UITableView+FDTemplateLayout ...