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

 1 package it.cast.jdbc;
 2
 3 import java.sql.Connection;
 4 import java.sql.ParameterMetaData;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.ResultSetMetaData;
 8 import java.sql.SQLException;
 9 import java.util.HashMap;
10 import java.util.Map;
11
12 public class ResultSetMetaTest {
13
14     public static void main(String[] args) throws SQLException {
15
16         Map<String,Object> map = read("select * from user where id=2");
17         System.out.println(map);
18     }
19
20     static Map<String, Object> read(String sql) throws SQLException {
21
22         Connection conn = null;
23         PreparedStatement ps = null;
24         ResultSet rs = null;
25
26         try {
27             conn = jdbcUtils.getConnection();
28             ps = conn.prepareStatement(sql);
29             rs = ps.executeQuery();
30
31             ResultSetMetaData rsmd = rs.getMetaData();
32
33             // 得出有多少列
34             int count = rsmd.getColumnCount();
35
36             String[] colNames = new String[count];
37
38             for (int i = 1; i <= count; i++) {
39                 // System.out.print(rsmd.getColumnClassName(i)+"\t");
40                 // System.out.print(rsmd.getColumnName(i)+"\t");
41                 // System.out.println(rsmd.getColumnLabel(i)+"\t");
42                 colNames[i-1] = rsmd.getColumnName(i);
43             }
44
45             Map<String, Object> data = null;
46
47             while (rs.next()) {
48                 data = new HashMap<String, Object>();
49
50                 for (int j = 0; j < colNames.length; j++) {
51                     data.put(colNames[j], rs.getObject(colNames[j]));
52                 }
53             }
54
55             return data;
56         } finally {
57             jdbcUtils.free(rs, ps, conn);
58         }
59     }
60 }

ResultSetMetaTest

时间: 2025-01-02 14:20:48

利用结果集元数据将查询结果封装为map的相关文章

JDBC学习笔记(15):利用结果集元数据将查询结果封装为map

在实际开发过程中,可能需要根据各种不同的条件进行查询,使用这种方式不需要条件写出一种查询方式. 1 package com.xxyh.jdbc; 2 import java.sql.Connection; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.ResultSetMetaData; 6 import java.sql.SQLException; 7 import jav

Hive架构层面优化之二合理利用中间结果集(单Job)

是针对单个作业,针对本job再怎么优化也不会影响到其他job: Hadoop的负载主要有两部分:CPU负载和IO负载: 问题:机器io开销很大,但是机器的cpu开销较小,另外map输出文件也较大,怎么办? 解决办法:通过设置map的中间输出进行压缩就可以了,这个不会影响最终reduce的输出. 集群中的机器一旦选定了,那么CPU就没的改变了,所以集群的最主要的负载还是IO负载: 压缩技术虽然可以降低IO负载,但是同时也加重了CPU负载,治标不治本,CPU加重了,整体性能还是上不去:如果当前CPU

php连接数据库查询与非查询的封装函数

非查询的封装 <?php header('content-type:text/html;charset=utf-8'); define('HOST','127.0.0.1'); define('UNAME','root'); define('PWD','123456'); define('DB','test'); define('PORT',3307); function my_exec($sql){ $link=mysqli_connect(HOST,UNAME,PWD,DB,PORT); i

SSRS 2012 参数化报表 -- 利用拼接字符串来取代查询参数

SSRS 2012 参数化报表 -- 利用拼接字符串来取代查询参数 以上介绍过了如何在SQL Server中使用参数化查询,但是,如果遇到一些不支持参数化查询的数据库又该怎么办呢?此时,最终极的招数就是整个查询语句都通过参数化查询以拼接字符串的方式来产生. 举例来说,除了XML文件之外,SSRS也能够接收外部Web Services返回的数据集以产生报表.在以下的实例中,利用立陶宛国家银行所提供的实时汇率换算Web服务,它提供各种货币与立陶宛币(Litas)的汇率换算. 步骤1: 请将数据表拖拉

【Mysql】利用内连接与嵌套查询实现多表查询,主键、外键的基本概念

虽然多表查询,在计算机的必须课,数据库,里面已经大讲特讲,但是这个难点很多老师都没有讲深讲透.跟你净扯一大堆,左连接右连接的东西,让人一头雾水.老师把所有多表查询的方法告诉你,但是到头来一种方法都没有掌握.其实只要记住一种就够了,学会多表查询,除了在你考数据库能够拿到很高分之外,到了实际应用,很多地方都用到多表查询.比如论坛工程中分析回帖发帖的关系,提供该用户发了什么帖子的功能.比如信息管理系统中,分析班级与学生.老师之间的关系,提供该班级中存在多少学生的查询功能.就需要用到多表查询,你总不能把

Python与数据库[2] -&gt; 关系对象映射/ORM -&gt; 利用 sqlalchemy 实现关系表查询功能

利用 sqlalchemy 实现关系表查询功能 下面的例子将完成一个通过关系表进行查询的功能,示例中的数据表均在MySQL中建立,建立过程可以使用 SQL 命令或编写 Python 适配器完成. 示例中用到的表主要有3张,一张personInfo个人信息表,一张account_store账号信息表,以及一张person_account_rel的个人信息与账号关系表. 示例中将会通过已知的人物年龄和id通过个人信息表查出个人姓名(仅为参考示例,请忽略怪异的查找逻辑 :) ),随后根据关系表得到的人

对象属性封装到map中

package cn.itsource.crm.utils; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.Map; import org.springframework.beans.BeanUtils; public class CommUtil

【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询

在我的上一篇博客<[java]itoo项目实战之hibernate 懒加载优化性能>中,我曾提到过学生数据有2万条,查询数据十分的慢,这是让人很受不了的事情,看着页面进度条一直转着圈圈,那种着急的感觉真的没法形容.最开始考虑着使用lazy 来优化,因为前台框架的原因,lazy 优化并没有起到什么左右,后来就想着有select new map 优化.我先来画画关于查询学生的级联树 这个树的意思就是查询学生的时候它的深度是4级. 在没有优化之前,使用的是hibernate的hql 语句:From

struts2获取表单数据之 属性封装 模型驱动 表达式封装 对象封装到list集合 对象封装到map集合 五种方便的封装方式

一.属性封装 属性封装是在action里面设定属性值,属性名字一定要和表单中的name一样,action中extends ActionSupport demo1.jsp: <body> This is my login JSP page. <br> <form action="demo1.action" method="post" > username<input type="text" name=&qu