各位写JSP的时候,是怎么处理数据返回的,用ResultSet吗??进来说说看!! 1.RowSet.2.ValueObject(有点DTO的味道). 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <%rs = stmt.executeQuery("SELECT * FROM BOOK");while(rs.next()){%><%=rs.getString("bookid")%><%=rs.getString("title")%><%}%> javawriter(java菜鸟) :你用ARRAYLIST怎么来用的 最好采用三层结构,返回结果采用一个数组,或者一个Vector都可以 看看JIVEwww.jdon.com里有关于这个问题的讨论,不建议用RESULTSET,可以用CELECTION等 http://www.jdon.com:81/jive/thread.jsp?forum=16&thread=302banq 发表文章: 926 来 自: 上海注册时间: 2002-08 查询数据库后是返回ResultSet还是返回Collection? 发表时间: 2002年08月21日 14:23:27 回复 既然我们把数据库访问封装起来了,那么如果查询数据库返回的是一系列结果,比如我们从数据库中得到所有人的用户名,然后在Jsp页面显示出来。这里就有一个普遍疑问,我这个javabean是返回ResultSet到Jsp中还是Collection?我曾经有段时间图省事,直接返回ResultSet,然后在我的jsp页面中是大量的ResultSet遍历。这其实还是将数据层和显示层混淆在一起。在EJB CMP中,返回的是Collection,这样偶合性降低,不用在修改数据库结构后,一直修改程序到前台Jsp页面,这和以前的php Asp开发方式没两样。但是返回Collection效率不是很高,因为意味着在内存中要开辟一个内存存放所有的结果。我看了http://builder.com.com/article.jhtml?id=u00220020814R4B01.htm这篇文章后,觉得启发很大,返回Iterator就可以了。Iterator也是个模式,在Jive中大量使用了Iterator,我以前很奇怪,为什么他没事自己写个Iterator,现在知道原因了,这样节省内存,而且效率高。看下面比较: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");}}}这里返回的是一个内部类,其实你可以象Jive那样,专门做个Iterator类,这样,这里写得就不那么难看,你自己定义的Iterator和Collection中的Iterator没有任何关系,自己定义了三个方法 hasNext(); next(); remove();这样看上去和Collection的Iterator是一样的。从自己作的这个Iterator类中看到,这个Javabean只是做了一个指针传递作用,将调用本Javabean的指针传递到ResultSet,这样既提高了效率,节约了内存,又降低了偶合性,这是堪称中间件典型的示范。既然返回iterator这么好,有人经常用到一个简单的返回Iterator方法:public Iterator getUsers() {ResultSet rs = userDbQuery();List list = new ArrayList()while (rs.next()) {list.add(rs.getString(1));}return list.iterator();}这其实和直接返回list没区别,还是浪费内存。__________________我喜欢的签名... 我有一个参照书上的例子写的代码,其中本来返回的arraylist,后来我又封装了一层,返回我自己写的一个类似Rowset的类,如果有兴趣,我可以给你发一份。 fuzhou77(浮舟):好的,发一份给我吧,多谢了[email protected] Vector效率很低的,别用它,若初学就用ResultSet吧,最好学会用Connection苦行僧帖出的jdon的那篇文章是经典的经典,一定要珍藏~~ 我觉得resultset不合适,你返回这个就表明你必须保持一条数据库连接,那么就是爸resultset的关闭的责任,交给了外面,那么bean里面封装的东西实在是有限一点想法,请各位高手指教:)最好学会用connection是指什么? 数据处理,数据变向 mysql的datetime类型的存储问题。。。 怎么样在服务器端生成定时器 JSF控件的值的问题 K线 问一下jsp能否加入日期这样的控件?设计jsp页面有没有好的工具可以设计?不是单纯写代码的那种 实现点击事件的脚本,不想用取坐标系的,想用取对象名运行的脚本 jsp怎么连接SQL server2000 急:使用jspsmart包上传附件,为什么总在upload方法中抛异常? 疑惑1 有一个问题不明白,请指教! 如何把滚动文本框中得到的string,插入到blob类型的表中,具体语句,立刻给分
rs = stmt.executeQuery("SELECT * FROM BOOK");
while(rs.next())
{
%>
<%=rs.getString("bookid")%>
<%=rs.getString("title")%>
<%
}
%>
返回结果采用一个数组,或者一个Vector都可以
不建议用RESULTSET,可以用CELECTION等
发表文章: 926
来 自: 上海
注册时间: 2002-08
查询数据库后是返回ResultSet还是返回Collection? 发表时间: 2002年08月21日 14:23:27 回复
既然我们把数据库访问封装起来了,那么如果查询数据库返回的是一系列结果,比如我们从数据库中得到所有人的用户名,然后在Jsp页面显示出来。这里就有一个普遍疑问,我这个javabean是返回ResultSet到Jsp中还是Collection?我曾经有段时间图省事,直接返回ResultSet,然后在我的jsp页面中是大量的ResultSet遍历。这其实还是将数据层和显示层混淆在一起。在EJB CMP中,返回的是Collection,这样偶合性降低,不用在修改数据库结构后,一直修改程序到前台Jsp页面,这和以前的php Asp开发方式没两样。但是返回Collection效率不是很高,因为意味着在内存中要开辟一个内存存放所有的结果。我看了http://builder.com.com/article.jhtml?id=u00220020814R4B01.htm这篇文章后,觉得启发很大,返回Iterator就可以了。Iterator也是个模式,在Jive中大量使用了Iterator,我以前很奇怪,为什么他没事自己写个Iterator,现在知道原因了,这样节省内存,而且效率高。看下面比较: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");
}
}
}这里返回的是一个内部类,其实你可以象Jive那样,专门做个Iterator类,这样,这里写得就不那么难看,你自己定义的Iterator和Collection中的Iterator没有任何关系,自己定义了三个方法 hasNext(); next(); remove();这样看上去和Collection的Iterator是一样的。从自己作的这个Iterator类中看到,这个Javabean只是做了一个指针传递作用,将调用本Javabean的指针传递到ResultSet,这样既提高了效率,节约了内存,又降低了偶合性,这是堪称中间件典型的示范。既然返回iterator这么好,有人经常用到一个简单的返回Iterator方法:
public Iterator getUsers() {
ResultSet rs = userDbQuery();
List list = new ArrayList()
while (rs.next()) {
list.add(rs.getString(1));
}
return list.iterator();
}这其实和直接返回list没区别,还是浪费内存。__________________我喜欢的签名...
好的,发一份给我吧,多谢了
[email protected]
最好学会用Connection苦行僧帖出的jdon的那篇文章是经典的经典,一定要珍藏~~
一点想法,请各位高手指教:)
最好学会用connection是指什么?