JAVA将ResultSet结果集遍历到List中

原文地址:JAVA将ResultSet结果集遍历到List中 作者:我不学习没人爱 

今天在使用jstl标签展示查询结果时遇到一个小问题,即如何将ResultSet对象传递给前台页面。 

在默认情况中我们在使用数据库查询时

Class.forName(dom.getDriver()); //加载MYSQL JDBC驱动程序 String url=dom.getUrl()+"/"+datebaseName+"?characterEncoding=UTF-8";Connection conn = DriverManager.getConnection(url,dom.getUsername(),dom.getPassword());Statement stat = conn.createStatement();String sql="select * from "+tableName+" order by "+order+";";ResultSet rs=stat.executeQuery(sql);list=convertList(rs);stat.close();conn.close();return list;

况下,我们是不能直接将 ResultSet 记录集 rs 直接传递给前台的,因为 ResultSet 不仅无法进行循环遍历 (即只能每行遍历,从0至end ,执行一次),而且在实际应用中,它还必须被关闭。当关闭后,rs为null ,结果不再存在。 

在这时我们就需要将 ResultSet 对象进行遍历到 list 中,代码如下:

privatestaticListconvertList(ResultSet rs)throwsSQLException{

List list =newArrayList();

ResultSetMetaData md = rs.getMetaData();//获取键名

intcolumnCount = md.getColumnCount();//获取行的数量

while(rs.next()) {

Map rowData =newHashMap();//声明Map

for(inti =1; i <= columnCount; i++) 

{

rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值

}

list.add(rowData);}returnlist;}


查看以上代码,可以看出我们使用 Map 与 MetaDate 使 ResultSet 储存到 list 中的,因为 list 只能存放元素的索引而不能存放元素的值,所以我们要用到 Map 。 

使用这种方法的好处就是可以创建高复用性的代码 ,因为我们不需要每次通过指定键名取值。 

实际工作间接,与君共勉。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 9,247评论 0 11
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,173评论 1 114
  • 本人的环境为Myeclipse10、MySQL5.7.15 本文包括:简介JDBC编程步骤打通数据库程序详解—Dr...
    廖少少阅读 9,570评论 7 39
  • 本文内容 1.什么是JDBC以及为什么要使用JDBC 2.JDBC核心API的讲解 3.使用JDBC核心API进行...
    Vincilovfang阅读 4,987评论 0 11
  • 2017.10.03临元代黄公望《富春山居图-剩山图》,现为陆伟师兄藏。 写完《送画》之后,至今大概已有四...
    道德之意阅读 3,982评论 4 2