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

ResultSet的问题,请各位大侠指教,小生感激涕零

楼主jaccheu(我在故你快乐)2005-04-04 18:27:06 在 Java / Web 开发 提问

我初学JSP,下面这个问题快使我疯掉了,请各位高手指点。  
  先说环境:  
  Tomcat   5.0.30   +   Lomboz   3.0.1   +   Eclipse   3.0.1   +   j2sdk   1.4.2.07  
  采用JDBC   +   ODBC连接Access   2003数据库,下面语句中的rs由Statement执行一个查询语句返回(这部分没有问题)。  
  出差语句是:  
  while   (i   <   pageSize   &&   rs.next())   {  
  out.println("<tr>\n<td   height=\"20\"   valign=\"middle\"   bgcolor=\"#FFFFFF\"   class=\"style5\">");  
  out.println(rs.getString("title")   +   "</td>\n<td   height=\"20\"   align=\"center\"   valign=\"middle\"   bgcolor=\"#FFFFFF\"   class=\"style5\">");  
  out.println(rs.getString("doc_id")   +   "</td>\n<td   height=\"20\"   align=\"center\"   valign=\"middle\"   bgcolor=\"#FFFFFF\"   class=\"style5\">");  
  out.println(dateFormat.format(rs.getDate("issue_date"))   +   "</td>\n</tr>");  
  }  
  如果我将while改成if,只输出一个记录没有问题。  
  系统提示的信息:  
  javax.servlet.ServletException:   [Microsoft][ODBC   驱动程序管理器]   无效的游标状态  
  org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)  
  org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)  
  org.apache.jsp.publicArea_jsp._jspService(publicArea_jsp.java:162)  
  org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
  org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)  
  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)  
  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
   
   
  root   cause    
   
  java.sql.SQLException:   [Microsoft][ODBC   驱动程序管理器]   无效的游标状态  
  sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown   Source)  
  sun.jdbc.odbc.JdbcOdbc.standardError(Unknown   Source)  
  sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(Unknown   Source)  
  sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(Unknown   Source)  
  sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Unknown   Source)  
  sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Unknown   Source)  
  org.apache.jsp.publicArea_jsp._jspService(publicArea_jsp.java:129)  
  org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
  org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)  
  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)  
  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
   
  问题点数:100、回复次数:16Top

1 楼larson001(斗士)回复于 2005-04-04 18:44:20 得分 0

你的Statement对象可是这样写的?  
  stmt   =   conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
   
   
  另,while循环里怎么没见你写i++?Top

2 楼zhutouzip(醒了的鸟)回复于 2005-04-04 18:56:36 得分 0

我看着就是i没有变,其它没问题啊?  
  看不出来啊,如果i<pagesize一直成立的话,相当于while变成while(rs.next())啊,应该没问题啊!Top

3 楼jaccheu(我在故你快乐)回复于 2005-04-04 19:23:04 得分 0

larson001:  
  你好!  
  不好意思,i++有的,这里忘了。  
  Statement是这样写的:stmt   =   conn.createStatement();Top

4 楼syliang2003(祝天下有情人终成扣肉)回复于 2005-04-04 19:30:48 得分 0

java与html混合写?????  
  这是非常不科学的!  
  java还JAVA,HTML还HTML,分开好一点!Top

5 楼zhutouzip(醒了的鸟)回复于 2005-04-04 19:33:31 得分 10

stmt   =   conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
  这样写只影响last()方法,楼主的代码能不能贴完整点!Top

6 楼jaccheu(我在故你快乐)回复于 2005-04-06 11:38:42 得分 0

TO:   101  
  前面的代码如下,很简单的。  
  String   DB_CONNECTION_STRING   =   "jdbc:odbc:test";  
  String   dbDriver   =   "sun.jdbc.odbc.JdbcOdbcDriver";  
  Connection   connection   =   null;  
  Statement   statement   =   null;  
  ResultSet   rs   =   null;  
  String   sql;  
  try   {  
  Class.forName(dbDriver);  
  connection   =   DriverManager.getConnection(DB_CONNECTION_STRING);  
  statement   =   connection.createStatement();  
  sql   =   "SELECT   *   FROM   test";  
  rs   =   statement.executeQuery(sql);  
  }  
  catch(ClassNotFoundException   e)   {  
  System.err.println("Error   loading   driver:   "   +   e);  
  }  
  catch(SQLException   e)   {    
  e.printStackTrace();  
  }  
  Top

7 楼drugon(更高,更远,更强)回复于 2005-04-06 11:57:29 得分 0

这些信息还是看不出来,你把TOMCAT里面的logs信息粘出来。Top

8 楼jaccheu(我在故你快乐)回复于 2005-04-06 13:39:16 得分 0

To   drugon(更高,更远,更强)   :  
  logs信息如上述问题描述Top

9 楼zhutouzip(醒了的鸟)回复于 2005-04-06 13:56:24 得分 0

换成if真的能打印出一条结果?  
  我怎么横看竖看出了i的只需要变外,就是没错啊!Top

10 楼escalj(天行健,君子以自强不息)回复于 2005-04-06 14:11:52 得分 0

你确认真正出问题的就是这段代码么?我是说,你的while循环之后还有内容么?如果还有rs.get××()   之类的代码,那就千万别忘设好rs的指针状态。  
  感觉如果换成if没问题的话那就可能是这个原因了。  
  Top

11 楼icewhite(默涵)回复于 2005-04-06 14:17:59 得分 0

你先rs.next()打印一下看看Top

12 楼appleangle(苹果熟了)回复于 2005-04-06 14:26:07 得分 0

upTop

13 楼DanielYWoo(绿色毒汁)回复于 2005-04-06 15:32:48 得分 0

tomcat   5   可以用jdk142跑阿?我还以为只能用jdk15呢Top

14 楼jaccheu(我在故你快乐)回复于 2005-04-06 18:06:14 得分 0

TO   101:  
  换成if是能打印出一条记录来,如果只有一条记录,输出一条记录后我用if测试rs.next()返回的就是false。但用while就是报错,真的很奇怪。(i不需要考虑,没有影响)Top

15 楼jaccheu(我在故你快乐)回复于 2005-04-07 11:21:38 得分 0

TO   escalj(吹尽狂沙始到金)   :  
  我将while()语句块内容全部注释掉还是同样的问题。Top

16 楼lavendergo( 王者归来)回复于 2005-04-07 12:50:38 得分 90

检查一下你数据库里所有字段的记录是不是都是非空的!!Top

相关问题

  • **************各位高手请帮帮忙!小弟在此感激涕零!**************
  • java包的使用到底需要设置些什么?各位大侠给看下,小弟感激涕零
  • 急死我了!串口读写和多线程的几个问题,千万帮忙阿!菜鸟多谢各位,感激涕零!!
  • 各位前辈,小生想问
  • 请高手帮忙!!感激涕零
  • 各位兄弟,小生有一事相求,望各位帮忙。。。
  • 各位老少爷们,帮帮小生吧!!!
  • 各位大俠請幫幫小生,我都快吐血了.
  • 小生初来乍到,请各位多多指教。
  • 各位pb高手救救小生我!谢谢!

关键词

  • 语句
  • runtime
  • apache
  • servlet
  • jsp
  • service
  • pagecontextimpl
  • jasper
  • jspservlet
  • httpservlet

得分解答快速导航

  • 帖主:jaccheu
  • zhutouzip
  • lavendergo

相关链接

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

广告也精彩

反馈

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