CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

rs.getString(1) 不能用两次吗?

楼主corrupt(喜欢 睡在床板下 的思考)2006-07-09 16:51:17 在 Java / Web 开发 提问

如下   :我想让   rs.getLong(1)   输出两遍,一次最前面,一次最后面。  
  可是   不行,去了最后一句   就可以。不知道为什么??  
  while(rs.next())  
  {  
   
  out.print("<tr>");  
  out.print("<td   width=100>"+rs.getLong(1)+"</td>");  
  out.print("<td   width=50>"+rs.getString(2)+"</td>");  
  out.print("<td   width=100>"+rs.getString(3)+"</td>");  
  out.print("<td   width=50>"+rs.getInt("user_age")+"</td>");  
  out.print("<td   width=50>"+rs.getString("user_sex")+"</td>");  
  out.print("<td   width=100>"+rs.getString("user_address")+"</td>");  
  out.print("<td   width=100>"+rs.getString("user_telephone")+"</td>");  
  out.print("<td   width=100>"+rs.getString("user_addtime")+"</td>");  
  out.print("<td   width=100>"+rs.getLong(1)+"</td>");//------  
  out.print("</tr>");  
  } 问题点数:20、回复次数:25Top

1 楼luobo525(天津拼客网(www.pktj.net))回复于 2006-07-09 17:02:01 得分 0

默认的   ResultSet   对象不可更新,仅有一个向前移动的指针。因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行  
   
  ---------------------  
   
  最好是放到一个变量中,反复用Top

2 楼trumplet(检查)回复于 2006-07-09 17:04:03 得分 0

不应该。  
   
  有什么错误信息吗?Top

3 楼aChinese(一个中国人)回复于 2006-07-09 17:08:56 得分 0

好象是微软的驱动有这毛病,   用jtds.  
  out.print是IO操作,极慢,   你这样占用了连接很久  
  不能这么干,   应该把数据读出来后放入集合中,   然后立即释放连接.  
  List   result   =   new   ArrayList();  
  while(rs.next())  
  {  
        User   u   =   new   User();   //一个dto  
        u.setAge(rs.get(user_age));  
        ....把数据都放进dto  
        result.add(u);     //   dto放进list  
  }  
  然后,   关闭数据库连接  
  接下来,   List中数据你爱怎么读就怎么读Top

4 楼corrupt(喜欢 睡在床板下 的思考)回复于 2006-07-09 17:21:37 得分 0

恩。也只能如此了。。Top

5 楼aChinese(一个中国人)回复于 2006-07-09 21:46:53 得分 0

不是只能如此,是必须如此.   这么做不是为了解决你这个问题,   而是不占用宝贵的连接Top

6 楼sime59(天涯浪者)回复于 2006-07-09 21:56:39 得分 0

晕了     我用JDBC从没遇到那个问题啊     可以2次取RS的啊Top

7 楼marine_chen(覆雨翻云)回复于 2006-07-09 23:10:13 得分 0

可以那么取,理论上没问题,不过设个变量就更好了!  
  放在bean里用List取也不错。Top

8 楼chg2008(岂能尽如人意,但求无愧我心!)回复于 2006-07-09 23:17:56 得分 0

不可以Top

9 楼sdxlh007(海)回复于 2006-07-09 23:23:16 得分 0

应该是可以的啊,把出错信息发上来看看Top

10 楼treeway(趣玩—Trek-Seeking My Way)回复于 2006-07-09 23:34:11 得分 0

可以的Top

11 楼huxinsheng168(望M止渴)回复于 2006-07-10 08:15:10 得分 0

你有两条记录就用两次,有三条记录就用三次,有N+1条记录,就用N次。Top

12 楼YiYaYo()回复于 2006-07-10 08:44:10 得分 0

rs.getString(1)...  
  它只能一步一步的往下走..不可能再从回到第一个去走...  
  它只走一遍...从1走到2走到3...不可能直接回到1重新来过...Top

13 楼kevinliuu()回复于 2006-07-10 08:47:27 得分 0

 
  rs.getString(1)...  
  它只能一步一步的往下走..不可能再从回到第一个去走...  
  它只走一遍...从1走到2走到3...不可能直接回到1重新来过...  
   
  rightTop

14 楼ray_1981(雷)回复于 2006-07-10 08:58:19 得分 0

放到一个变量中,就可以反复用了!Top

15 楼YiYaYo()回复于 2006-07-10 09:01:22 得分 0

ray_1981(雷)  
  放到一个变量中,就可以反复用了!  
   
  ---------------------------------------------------------------------------------  
  这谁都知道...  
  可如果值起变化的话呢..?Top

16 楼eric8376(风不平)回复于 2006-07-10 09:22:53 得分 0

不能Top

17 楼risa_meng()回复于 2006-07-10 15:32:57 得分 0

对啊,不能使用两次  
  不可以回头再查已经过去的数据了的Top

18 楼mastermind(北纬49度的雨)回复于 2006-07-11 17:34:48 得分 0

这应该和JDBC的版本有关系.尝试一下用连接池应该不会出现这个问题Top

19 楼guzuoshantou(孤小小)回复于 2006-07-11 20:56:22 得分 0

可以把记录集的类型改成可前后移动的,  
  在创建statement对象时确定resultSet的类型,  
  Statement   st=connectin.creatStatement(xxx,xxx);  
  ResultSet   rs=st.excuteQuery(sql);  
  那两个xxx忘记是什么了,是两个整型常量,自己去查一下;Top

20 楼cs_bs()回复于 2006-07-11 21:28:55 得分 0

你可以用Preperstatment对象,他好象可以.Top

21 楼cs_bs()回复于 2006-07-11 21:31:24 得分 0

还有楼上说的肯定是对的,创建st对象传两个参数的确是可以改变指针的位置Top

22 楼JaredJared()回复于 2006-07-11 22:01:34 得分 0

指定ResultSet为ResultSet.TYPE_SCROLL_INSENSITIVE就可以了。Top

23 楼King6860()回复于 2006-07-12 11:31:50 得分 0

楼主用的   连接协议不知道是不是   JDBC:ODBC   。。  
  如果是,建议使用其他的驱动。。  
  我使用   JDBC:ODBC   的时候,也遇到过这样的问题。。。Top

24 楼jackson416(鬼鬼 | 问世间小裤衩是何物,为何.....)回复于 2006-07-12 11:47:22 得分 0

你可以将指针返回到首位rs.beforeFirst();  
   
  再取rs.getLong(1)Top

25 楼bingohu(小样你新来的吧)回复于 2006-07-12 16:38:14 得分 0

while(rs.next())  
  {  
  long   str   =   rs.getLong(1);  
  out.print("<tr>");  
  out.print("<td   width=100>"+   str   +"</td>");  
  out.print("<td   width=50>"+rs.getString(2)+"</td>");  
  out.print("<td   width=100>"+rs.getString(3)+"</td>");  
  out.print("<td   width=50>"+rs.getInt("user_age")+"</td>");  
  out.print("<td   width=50>"+rs.getString("user_sex")+"</td>");  
  out.print("<td   width=100>"+rs.getString("user_address")+"</td>");  
  out.print("<td   width=100>"+rs.getString("user_telephone")+"</td>");  
  out.print("<td   width=100>"+rs.getString("user_addtime")+"</td>");  
  out.print("<td   width=100>"+   str   +"</td>");//------  
  out.print("</tr>");  
  }  
   
  这样行不  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:corrupt

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo