将ResultSet结果集放在Result中进行处理

在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	







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值