zoukankan      html  css  js  c++  java
  • ResultSet与Result

    微软的.NET平台上面的数据访问有一个特点,就是数据查询的结果,可以放在内存中,以XML格式进行描述,不需要一直与数据库保持在线连接,用DataSet + Data Adapter来实现!

    而在JDBC中,我们通常使用javax.sql.ResultSet类来存放放回的数据,它会长期占用数据库连接的资源.是一个有点不爽的问题...

    其实,在JSTL中提供了另外一种机制,让我们在返回查询结果到表示层的时候,可以做到离线使用!它就是javax.servlet.jsp.jstl.sql.Result类!

    Result:

        1,  定义

        表示数据库结果集的数据表。完整名称javax.servlet.jsp.jstl.sql.Result

        2,  获得

        为了得到ResultSet,我们首先必须先要得到Result,然后使用ResultSupport.toResult(rs)转化即可。

        3,遍历

        Result的结构为SortedMap数组(SortedMap[]),即表中每一行为一个SortedMap。其中key值为列名,value值为列值。

        遍历时先取出表中的每一行,即SortedMap[]中每一个元素--使用Result.getRows()方法可以得到SortedMap[],然后通过key值取得value值

    数据库表TestResult:

    JAVA代码:

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.PreparedStatement;
     4 import java.sql.ResultSet;
     5 import java.sql.SQLException;
     6 import java.util.SortedMap;
     7 import javax.servlet.jsp.jstl.sql.Result;
     8 import javax.servlet.jsp.jstl.sql.ResultSupport;
     9 
    10 
    11 public class TestResult {
    12     public static void main(String[] args) {
    13         try {
    14             //JDBC连接数据库
    15             Class.forName("oracle.jdbc.OracleDriver");
    16             Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","wladmin","lan2711");
    17             PreparedStatement pStat = conn.prepareStatement("select * from testresult");
    18             //得到ResultSet
    19             ResultSet rs = pStat.executeQuery();
    20             //软换为Result
    21             Result result = ResultSupport.toResult(rs);
    22             //遍历--选通过result.getRows()得到SortedMap[],使用for遍历SortedMap[]里的每一元素
    23             for(SortedMap item : result.getRows()){
    24                 //通过列名来值取得SortedMap中的value
    25                 System.out.println("id:"+item.get("id")+"   name:"+item.get("name"));
    26             }
    27         } catch (ClassNotFoundException e) {
    28             e.printStackTrace();
    29         } catch (SQLException e) {
    30             e.printStackTrace();
    31         }
    32         
    33     }
    34 }

     结果 :

    id:1    name:hello
    id:2    name:world

  • 相关阅读:
    【2019-11-22】组件与模板 -- 显示数据
    【2020-01-22】模块
    【2020-01-21】迭代器和生成器
    【2020-01-17】高级类型
    【2020-01-08】类和对象
    【2019-01-07】类型和变量 + 语句
    【2020-01-07】C#语言元素
    【2020-01-07】C# 基本概念
    【2020-01-05】C#程序内部
    时间就是这样一点一点的度过的
  • 原文地址:https://www.cnblogs.com/likailan/p/3256568.html
Copyright © 2011-2022 走看看