牛仔裤的夏天
JAVA是蓝色的-
online
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
30 随笔 :: 5 文章 :: 12 评论 :: 0 Trackbacks
<
2006年3月
>
日
一
二
三
四
五
六
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
公告
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
Java(5)
(rss)
Others(4)
(rss)
Struts & Hibernate(9)
(rss)
Tomcat & Weblogic(2)
(rss)
XML(2)
(rss)
贝贝的故事(8)
(rss)
随笔档案
2006年6月 (1)
2006年4月 (3)
2006年3月 (20)
2006年2月 (1)
2006年1月 (3)
2005年12月 (2)
文章档案
2006年3月 (2)
2006年2月 (1)
2006年1月 (1)
2005年12月 (1)
连接
InputKing在线中文输入
java录像
面试题目
搜索
最新评论
1. re: struts中<html:messages>标签的使用[未登录]
kkk
--kkk
2. re: struts中<html:messages>标签的使用
hdfd
--nn
3. re: 学习 xpath 的2个网站
??
--luckyrobbie
4. re: 学习 xpath 的2个网站
4..686
--肖利
5. re: 学习 xpath 的2个网站
1230456
--肖利
阅读排行榜
1. 一个取到ResultSet后返回Iterator的例子(3943)
2. struts中<html:messages>标签的使用(1138)
3. 复习一遍aix操作(835)
4. 显示结果集的标签(825)
5. Weblogic JMS 的配置和MDB的应用(听课笔记)(756)
评论排行榜
1. 一个取到ResultSet后返回Iterator的例子(6)
2. 学习 xpath 的2个网站(3)
3. struts中<html:messages>标签的使用(2)
4. 显示结果集的标签(1)
5. 打电话(0)
一个取到ResultSet后返回Iterator的例子
在Jdon.com里面看到的,觉得很值得借鉴
原文:
http://www.jdon.com/jive/thread.jsp?forum=16&thread=302
看下面比较:
public
List getUsers()
{
ResultSet rs
=
userDbQuery();
List retval
=
new
ArrayList();
while
(rs.next())
{
retval.add(rs.getString(
1
));
}
return
retval;
}
上面是个我们采取返回Collection后最常用的方法,将ResultSet中的用户名加入List再返回,显然这很耗费内存。
使用Iterator返回:
public
Iterator getUsers()
{
final
ResultSet rs
=
userDbQuery();
return
new
Iterator()
{
private
Object next;
public
void
hasNext()
{
if
(next
==
null
)
{
if
(
!
rs.next())
{
return
false
;
}
next
=
rs.getString(
1
);
}
return
true
;
}
public
Object next()
{
if
(
!
hasNext())
{
throw
new
NoSuchElementException();
}
String retval
=
next;
next
=
null
;
return
retval;
}
public
void
remove()
{
throw
new
UnsupportedOperationException (
"
no remove allowed
"
);
}
}
}
这个Javabean只是做了一个指针传递作用,将调用本Javabean的指针传递到ResultSet,这样既提高了效率,节约了内存,又降低了偶合性,这是堪称中间件典型的示范。
posted on 2006-03-15 16:56
luckyrobbie
阅读(3943)
评论(6)
编辑
收藏
所属分类:
Java
评论
#
re: 一个取到ResultSet后返回Iterator的例子
2006-03-15 18:00
剑事
两种方法各有优点
不过感觉也都一般
第一个占内存,损失了内存又没方便多少
第二个占连接,损失了连接又没快多少
http://www.blogjava.net/jfy3d/archive/2005/05/12/4185.html
我实现的比第一个方便
回复
更多评论
#
re: 一个取到ResultSet后返回Iterator的例子
2006-03-15 20:40
luckyrobbie
“第二个占连接,损失了连接又没快多少” 没损失,连接断了后rs依然存在的
你的做法和我以前的做法一样的,把一行放在一个HashMap中,然后把结果集封装在一个Vector或者ArrayList中,然后在通过客户化的标签进行View的显示,你可以看我这篇随笔
http://www.blogjava.net/luckyrobbie/archive/2006/03/10/34648.aspx
回复
更多评论
#
re: 一个取到ResultSet后返回Iterator的例子
2006-03-16 07:25
剑事
连接con.close后
next = rs.getString(1);
是不能用的
不知道你亲手测试了没
回复
更多评论
#
re: 一个取到ResultSet后返回Iterator的例子
2006-03-16 08:27
luckyrobbie
connection关闭后,resultset是可以遍历的
statement关闭后,就不能遍历了
回复
更多评论
#
re: 一个取到ResultSet后返回Iterator的例子
2006-03-16 08:54
boss_ch
connection关闭后,resultset是可以遍历的
这是因为在使用连接池的情况下,Connection.close 是把连接返回给连接池了,但是没有实际的关闭数据库的网络连接,所以,rs 是可以遍历的,但是这时候 Conention 的状态就不是刚创建连接时的状态了。
实际上,上文所说的这种迭代模式,实在是一个坏做法。不要误导初学者
回复
更多评论
#
re: 一个取到ResultSet后返回Iterator的例子
2006-03-16 09:24
luckyrobbie
@boss_ch
不用连接池啊
为何你认为是不好的做法?
回复
更多评论
新用户注册
刷新评论列表
IT新闻:
·
保留MySQL 俄罗斯有条件通过Oracle收购Sun
·
世界第一编程牛人97年的作品 最小程序实现3D
·
盛大文学称已发布百款苹果应用商店应用程序
·
微软:与开源社区的关系将发生实质性变化
·
环球企业家:劫后九城
专题:
Android
iPad
jQuery
Chrome OS
博客园首页
IT新闻
知识库
学英语
Java程序员招聘
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
[使用Ctrl+Enter键可以直接提交]
每天10分钟,轻松学英语
推荐职位:
·
飞信服务器端高级.NET开发工程师(新媒传信)
·
.NET飞信官网开发工程师(新媒传信)
·
.NET技术开发总监(广州衣酷)
·
ASP.NET资深工程师 (盛大网络)
·
.NET初级程序员 (北京安人)
·
.NET中级程序员 (北京安人)
·
中高级.NET工程师(沪江网)
·
前端开发工程师(沪江网)
博客园首页随笔:
·
Expression Blend实例中文教程(3) - 布局控件快速入门Grid
·
上周热点回顾(3.15-3.21)
·
Visual Studio 2010 Ultimate测试体系结构
·
时间管理——专注与放下
·
[译].Google Chrome extensions(实验室).界面.浏览器动作
知识库:
·
技术、业务、市场
·
五个广泛流传的对大龄程序员的误解
·
有感于“研发人员的个人培养和组织培养”
·
SQL vs NoSQL:数据库并发写入性能比拼
·
让敏捷与“以用户为中心的设计”和谐共生
网站导航:
博客园
IT新闻
个人主页
博客生活
IT博客网
C++博客
博客园社区
相关文章:
用decorate模式画一张画
用六大代码问题检验你的Java知识能力
JSP彩色验证码
Databases and JDBC Drivers
一个取到ResultSet后返回Iterator的例子
Powered by:
BlogJava
Copyright © luckyrobbie