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代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.SortedMap;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport; public class TestResult {
public static void main(String[] args) {
try {
//JDBC连接数据库
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","wladmin","lan2711");
PreparedStatement pStat = conn.prepareStatement("select * from testresult");
//得到ResultSet
ResultSet rs = pStat.executeQuery();
//软换为Result
Result result = ResultSupport.toResult(rs);
//遍历--选通过result.getRows()得到SortedMap[],使用for遍历SortedMap[]里的每一元素
for(SortedMap item : result.getRows()){
//通过列名来值取得SortedMap中的value
System.out.println("id:"+item.get("id")+" name:"+item.get("name"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} }
}
结果 :
id:1 name:hello
id:2 name:world
ResultSet与Result的更多相关文章
- java中result和resultSet
ResultSet: 1,定义 public interface ResultSet 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成. 2,获得 State ...
- 功能完善的Java连接池调用实例
/** * Title: ConnectPool.java * Description: 连接池管理器 * Copyright: Copyright © 2002/12/25 * Company: * ...
- 淘宝(阿里百川)手机客户端开发日记第十三篇 mysql的连接
首先,我建立了一个包,里面存放了三个类文件,这三个文件是我从网络中找的,经过自己的整理.(我刚才查找想把这三个文件传上去,可能是自己对cnblogs的博客不太熟悉吧,没有找到,我只好粘贴代码了) 三个 ...
- 不遗留问题-menu数据拼装
DROP TABLE IF EXISTS `menu0910`; CREATE TABLE `menu0910` ( `id` ) NOT NULL AUTO_INCREMENT, `menu` ) ...
- 学生成绩管理系统 1.0(Java+MySql)
真难…… 数据库建立不会,中文编码不会,插入数据不会,删除不会…… Java读入数据不会……数据库连接不会…… 你也好意思说自己是学计算机的啊魂淡…… 我会慢慢写2.0,3.0版的……噗…… src/ ...
- 传智博客(JavaWeb方面的所有知识)听课记录(经典)
一. JavaWeb基础 第一天: 1.Eclipse详解: (1).Bad versionnumber in .class file:编译器版本和运行(JRE)版本不符合.高的JRE版本 ...
- SQL Abstraction and Object Hydration
SQL Abstraction and Object Hydration In the last chapter, we introduced database abstraction and a n ...
- mac下通过docker搭建LEMP环境
在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...
- JSP 登录页面
1. index.jsp来提交请求 2. login.jsp来检查数据库数据 3. 需要注意的是,下载下来的mysql.conection jar包需要放到WEB-INF下面的lib文件夹下 jsp ...
随机推荐
- [转!]jQuey中的return false作用是什么
jQuey中的return false作用是什么: 在众多的语句中都有return false的使用,当然对于熟悉它的开发者来说,当然是知根知底,知道此语句的作用,当然也就知道在什么时候使用此语句,不 ...
- Chessboard(规律)&&阿里巴巴和n个大盗(规律)
Chessboard Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 设置TextView水平居中显示
1.让TextView里的内容水平居中 android:gravity="center_horizontal" 2.让TextView控件在它的父布局里水平居中 android:l ...
- 在ASP.NET项目中使用CKEditor
CKEditor是什么 CKEidtor是一个在线富文本编辑器,可以将让用户所见即所得的获得编辑在线文本,编辑器或自动将用户编辑的文字格式转换成html代码. 在ASP.NET工程中添加CKEdito ...
- 详解Activity的四种启动模式
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Ac ...
- nsstring 替换
-(NSString*)searchaAndPlacing:(NSString*)string { NSString *text=[string stringByReplacingOccurrence ...
- [ZT]图像处理库的比较:OpenCV,FreeImage,CImg,CxImage
1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算, ...
- sulime运行 java 和 php
执行php脚本 1. 先配置好php环境变量 2. Tools -> Build System -> New Build System.... { "cmd" ...
- linux 删除和安装java
一.jdk1.4卸载 由于redhat Enterprise 5 中自带安装了jdk1.4的,所以在安装jdk1.6前我把jdk1.4的卸了,步骤如下: 1.打开终端输入#rpm -qa | gr ...
- JavaScript 对象扩展代码
JavaScript 扩展代码 更具需要写的几个扩展. 扩展核心自执行函数 Object.extend /** * 对象扩展体 参数是 {属性|方法:属性值|方法体} * 只执行实现 * * 实例对基 ...