
遇见, LV36
2014年10月7日
这个问题困扰我好久了, 以前也去看过jdbc源码 只知道Field类里面是有列的数量和列的序号以及列名和别名的, 但是ResultSetImpl并没有提供获取Field的方法,当时郁闷了很久, 一度都想改源码了, 最后想尽各种办法没有解决,只能再看源码了, 发现ResultSetImpl提供了getMetaData()方法,该方法可以获取到ResultSetMetaData对象中具有获取Field属性的方法。最后我用LinkedHashMap来存储了查询出来的一行数据,下面是封装的方法,跟大家分享一下(基于spring jdbc 道理和普通jdbc一样)。
public Map getOrderedRow(String sql, Object... param) { SqlRowSet rs = this.getJdbcTemplate().queryForRowSet(sql, param); if(rs == null) { return null; } Map result = new LinkedHashMap(); int columnCount = rs.getMetaData().getColumnCount(); for(int i=1; i<=columnCount; i++) { //rs.getMetaData().getColumnName(i) 获取不到别名 改用getColumnLabel //rs.first()判断是否有数据 result.put(rs.getMetaData().getColumnLabel(i), rs.first() ? rs.getString(i) : null); } return result; }
评论(4)
最佳答案
最代码官方 LV168
2014年10月1日
客户端查询显示的列顺序是和建表的时候列顺序一致的,我在mysql上测试过,不知道oracle是否如此,你验证下。
另外关于java jdbc查询数据库获取字段的顺序问题
com.mysql.jdbc.JDBC4ResultSet返回的ResultSet中fields的顺序也是和建表的列顺序一致。
通过java获取的时候无所谓顺序了吧。
PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); String result = ""; while (rs.next()) { String id = rs.getString("id"); String name = rs.getString("name"); String pwd = rs.getString("pwd"); result += id + "\t" + name + "\t" + pwd + "\n"; }
- 等 最代码怎么获取牛币啊?
- 完 谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等 牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完 在微信打开的页面里进行app下载
- 等 最代码2014年欢乐聚声会
- 完 mysql如何查询表数据并且对3个字段降序的SQL?
- 完 最代码牛币机制改革
- 完 成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完 进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等 为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等 最代码是否开发手机app客户端?
- 完 java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等 php格式网页文件怎么运行?
- 等 Java volatile值获取的问题
- 等 前端vue,拦截了登录后台后,返回的token,requests拦截token,但是发送请求的时候,就出现跨越异常
- 等 大专本科计算机科班怎么找到Java工作?
- 等 eclipse怎么把三个java swing游戏项目合成一个项目?
- 完 伙伴们,大家都有什么好的解压方式么,分享一下~
- 完 三四线城市,6、7k,运维工作,索然无味,想去辞职上培训,各位牛牛有什么建议嘛
- 等 jsp页面输入中文变成问号
- 等 JPA在线上运行一段时间后报错Caused by: java.lang.IncompatibleClassChangeError: null
- 等 PHP 这个规则用preg_match_all怎么写
- 等 大佬们,有没有知道Alfresco如何配置LDAP登录呢?
- 等 php的install目录是框架带的吗?


ls0000006 LV1
2021年12月31日
mengxiaoyao LV3
2021年1月22日
yy回忆天空 LV6
2021年1月5日
8877zh
2020年10月8日
暂无贡献等级
啊啊啊ya LV9
2019年12月18日
想想未来 LV3
2019年10月17日
346675489 LV2
2019年9月26日
vieky LV10
2019年8月15日
hellomatou LV1
2019年7月31日
海鹏qqq LV2
2019年5月29日