`
izuoyan
  • 浏览: 9293180 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSP中早就有了类似.Net DataSet那样的离线数据访问了,抛弃ResultSet,拥抱Result吧!

阅读更多

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

而在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 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
2 <%@page contentType="text/html; charset=UTF-8"%>
3 <%@page import="java.sql.Connection"%>
4 <%@page import="java.sql.DriverManager"%>
5 <%@page import="java.sql.ResultSet"%>
6 <%@page import="java.sql.SQLException"%>
7 <%@page import="java.sql.Statement"%>
8 <%@page import="javax.servlet.jsp.jstl.sql.Result"%>
9 <%@page import="javax.servlet.jsp.jstl.sql.ResultSupport"%>
10 <%
11 // 暂且把这个下面的内容看作多层架构中的DAO好了,我偷懒了!
12 Connection conn = null;
13 Statement stmt = null;
14 ResultSet rs = null;
15 String strDbUrl
16 = "jdbc:mysql://localhost/tutorial?user=tutorial&password=tutpwd";
17 try {
18 //开始与数据库作查询
19 Class.forName("com.mysql.jdbc.Driver").newInstance();
20 conn = DriverManager.getConnection(strDbUrl);
21 stmt = conn.createStatement();
22 String strSql = "SELECT * FROM R_TUT_USERS";
23 rs = stmt.executeQuery(strSql);
24 //把ResultSet转化成Result
25 Result userData = ResultSupport.toResult(rs);
26 //当我们把结果放到某个Model bean后,就可以关闭数据库连接了.
27 //为了简化,我们暂且把pageContext看作Model Bean好了!
28 pageContext.setAttribute("userData", userData);
29 }
30 catch (Exception ex) {
31 // handle any errors
32 System.out.println("SQLException: " + ex.getMessage());
33 }
34 finally {
35 try {
36 if (rs != null) {
37 rs.close();
38 }
39 if (stmt != null) {
40 stmt.close();
41 }
42 if (conn != null) {
43 conn.close();
44 }
45 }
46 catch (SQLException ex) {
47 System.out.println("SQL Exception: " + ex.getMessage());
48 }
49 }
50 //DAO的逻辑结束
51 %>
52 <html>
53 <head>
54 <title>test</title>
55 </head>
56 <body>
57 <!--// 下面当作是表示层吧 //-->
58 <c:forEach items="${userData.rows}" var="user">
59 <c:out value='${user.name}'/>
60 </c:forEach>
61 </body>
62 </html>
分享到:
评论

相关推荐

    VB.net DataSet和JSON形式的数据相互转换

    VB.net中DataSet和JSON形式的数据相互转换的代码,可以拿来直接说用

    asp.net使用DataSet数据集插入表记录

    ### ASP.NET 使用 DataSet 数据集插入表记录 #### 知识点概述 在ASP.NET应用程序中,经常需要处理数据库操作,例如插入、更新或删除记录。其中一种常用的技术是使用`DataSet`来管理这些操作。`DataSet`是一个内存...

    ADO.NET_DataSet(数据集

    ADO.NET中的DataSet是.NET Framework中一个非常重要的组件,它提供了一种在应用程序中存储和处理数据的方式,即使在没有与数据库连接的情况下也能进行数据操作。DataSet可以被看作是一个轻量级的数据库,它在内存中...

    Delphi 像.net Dataset一样的的数据集

    标题 "Delphi 中的 .net Dataset 类似的数据集" 指的是 Delphi 开发环境中,如何实现类似于 .NET Framework 中 Dataset 的功能。在 .NET 中,Dataset 是一个内存中的数据库表示,可以处理多表数据,并支持添加、删除...

    asp.net DataSet对象

    为了高效地处理数据,Microsoft引入了`DataSet`对象,这是一个非常强大的离线数据存储机制,它提供了类似关系数据库的特性,如表(Table)、列(Column)、键(Key)等。`DataSet`对象可以被看作是内存中的一个轻量级的...

    .net 2.0 环境安装包

    ADO.NET是.NET Framework的数据访问组件,提供了与各种数据库交互的能力。2.0版本改进了DataSet对象,增强了数据缓存和数据同步功能,同时引入了DataTable和DataView的新特性,提升了数据处理能力。 7. 安装过程:...

    .net(dataset)输出流导出excel

    .net(dataset)输出流导出excel(无需生成模版excel文件,直接输出数据流导出excel表格)

    .net将DataSet集合转成Json形式

    将查询来的DataSet转成JSon形式,接收时注意,string和int字段都是用String形式的接受

    ASP.NET应用:DataSet 和XML(DataSet and XML)--vs2003

    在ASP.NET中,DataSet和XML是两个关键的数据处理组件,它们在数据管理与交换中发挥着重要作用。 **DataSet** DataSet是ADO.NET框架中的一个核心组件,它提供了一种内存中的数据缓存,可以存储来自多种数据源的数据...

    ASP.NET应用:DataSet 和XML

    掌握了`DataSet`和`XML`的使用技巧,开发人员可以在ASP.NET项目中更加高效地管理数据,实现数据的灵活存储、传输和处理。希望本文能为您的学习之旅提供有价值的指引。如需进一步了解或遇到具体问题,欢迎随时提问。

    .NET中的数据访问

    - **ADO.NET**: 采用了离线数据访问模型,即通过内存中的数据对象来操作数据,这些对象可以独立于数据库工作,减少了对数据库连接的依赖。 - **ADO**: 主要依赖于数据库连接进行数据操作,这意味着在大多数情况下,...

    ASP.NET 绑定DataSet中的多个表

    在ASP.NET中,数据绑定是将数据库或其他数据源的数据与用户界面元素(如GridView、Repeater等)关联的过程,使得用户界面可以根据数据源的变化实时更新。通常,我们会在数据绑定时处理单个数据表,但有时我们需要...

    ASP.NET以更新DataTable/DataSet方式访问数据库

    该例ADO.NET中非常重要的案例,也是ADO.NET的核心操作。与常见的访问数据库操作不一样,该操作选择用DataTable/DataSet作为缓冲,用户操作数据库实际上并未在后台数据库直接修改,而是在DataTable/DataSet上进行;...

    离线模式数据访问DataSet和DataAdapter.exe

    离线模式数据访问DataSet和DataAdapter

    C#.NET可移植的数据访问

    在IT行业中,数据访问是应用程序的核心部分,尤其是在开发基于C#.NET框架的应用程序时。C#.NET可移植的数据访问技术允许开发者在不同的平台和数据库系统间无缝地迁移和操作数据,提高了代码的重用性和灵活性。这篇...

    ASP.NET ADO.NET 数据访问 Demo

    ASP.NET ADO.NET 数据访问是Web开发中一个关键的领域,尤其对于初学者而言,理解并掌握这一技术至关重要。在给定的“ASP.NET ADO.NET 数据访问 Demo”中,我们可以深入探讨如何在Visual Studio 2008环境中,利用ADO...

    C#中DataSet的用法(很详细)

    在C#编程中,DataSet是ADO.NET框架中的一个重要组件,它是内存中数据的容器,能够离线存储和处理数据。DataSet不仅包含多个DataTable,用于存储实际的数据,还提供了丰富的功能,如浏览、排序、搜索、过滤和缓存更改...

    ASP.NET VB.NET创建数据访问组件

    总结,ASP.NET VB.NET创建数据访问组件涉及到数据库连接、SQL操作、数据集和数据适配器的使用,以及在ASP.NET页面中的集成。通过合理的设计和实现,可以构建出高效、灵活的数据访问层,支持应用程序的数据交互需求。

    asp.net之dataset深入学习

    《ASP.NET之DataSet深入学习》 在ASP.NET开发中,DataSet是.NET Framework提供的一种非常重要的数据处理组件。...通过学习,你不仅能提升ASP.NET开发技能,还能对.NET框架中的数据处理有更深入的理解。

    数据访问技术系列课程(2):ADO.NET 连接方式进行数据访问

    本课程“数据访问技术系列课程(2):ADO.NET 连接方式进行数据访问”着重讲解了如何利用ADO.NET这一强大的.NET框架组件进行高效的数据操作。 ADO.NET是由微软开发的一种数据访问技术,它是.NET Framework的重要组成...

Global site tag (gtag.js) - Google Analytics