牛仔裤的夏天
JAVA是蓝色的-
online
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
30 随笔 :: 5 文章 :: 15 评论 :: 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>标签的使用
4年前写的了,早忘记了
--luckyrobbie
2. re: struts中<html:messages>标签的使用
写的很好就是没用啊 我弄了好久它怎么都不出来..
--还在睡觉的幽灵
3. re: 有关ant的faq
default.properties under ant source code
--thomas sabo charm
4. re: struts中<html:messages>标签的使用[未登录]
kkk
--kkk
5. re: struts中<html:messages>标签的使用
hdfd
--nn
阅读排行榜
1. 一个取到ResultSet后返回Iterator的例子(5448)
2. struts中<html:messages>标签的使用(2126)
3. 复习一遍aix操作(2006)
4. Weblogic JMS 的配置和MDB的应用(听课笔记)(1550)
5. 显示结果集的标签(1153)
评论排行榜
1. 一个取到ResultSet后返回Iterator的例子(6)
2. struts中<html:messages>标签的使用(4)
3. 学习 xpath 的2个网站(3)
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
阅读(5448)
评论(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新闻
Chat2DB
C++博客
博问
管理
相关文章:
用decorate模式画一张画
用六大代码问题检验你的Java知识能力
JSP彩色验证码
Databases and JDBC Drivers
一个取到ResultSet后返回Iterator的例子
Powered by:
BlogJava
Copyright © luckyrobbie