在JDBC中,我们通常使用javax.sql.ResultSet类来存放放回的数据,它的流程和生命周期如下: 使用ResultSet来返回数据库查询结果 Client --> Connection --> Statement --> JDBC Driver -- + Database Client <-- Parsing <-- ResultSet <-- JDBC Driver -- + Connection lifecycle ResultSet lifecycle 我们可以看到,这样会长期占用数据库连接的资源,是一个有点不爽的问题... 在JSTL中提供了另外一种机制,让我们在返回查询结果到表示层的时候,可以做到离线使用!它就是javax.servlet.jsp.jstl.sql.Result类! 1.导入jstl包,是属于j2ee中的包 2.对数据库进行操作 数据库中的表ACCOUNT package com.org.connectsqlserver; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map; import javax.servlet.jsp.jstl.sql.Result; import javax.servlet.jsp.jstl.sql.ResultSupport; //通过result获取结果集 public class GetResult { public static final String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; public static final String url = "jdbc:sqlserver://localhost:1433;databaseName=Bank"; public static final String name = "sa"; public static final String password = "sa"; public static void main(String[] args){ Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, name, password); String sql="select * from account"; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); //利用ResultSupport.toResult(rs)将ResultSet转换为Result; Result result = (Result) ResultSupport.toResult(rs); //result.getRows();获取表中的数据,返回一个Map数组,表中的每一列都放在一个Map集合中 Map[] rows = result.getRows(); for(Map row:rows){ //通过row.get("ACCOUNT_ID")来获取每列的数据 System.out.print(row.get("ACCOUNT_ID")+"\t"); System.out.print(row.get("ACCOUNT_NAME")+"\t"); System.out.print(row.get("CODE")+"\t"); System.out.print(row.get("OPEN_TIME")+"\t"); System.out.println(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { conn.close(); ps.close(); rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } //执行后返回的结果 //1 陆逊 420106197810008674 2011-07-10 00:00:00.0 //2 大乔 422432197810034561 2011-07-12 00:00:00.0 //3 孙尚香 422432197810034168 2011-07-25 00:00:00.0 //4 吕布 422714197909077458 2013-03-19 22:10:38.613 //5 赵云 420104197811110852 2011-07-28 00:00:00.0 //6 张三 420104197811213214 2012-07-03 00:00:00.0 //7 刘备 420104199202143521 2011-11-20 00:00:00.0 //8 关羽 420104198905219542 2012-04-10 00:00:00.0 //9 李浩 420104198601245234 2011-02-14 00:00:00.0 //10 王武 420104198504251654 2010-04-25 00:00:00.0 //11 你好 420106197810003652 2013-03-27 23:30:08.56 //19 jack 422432197810034221 2013-03-28 00:13:19.06