我都要发疯了,为什么ResultSet在使用第7次时会突然抛出异常!

new_siberia 2004-10-07 10:16:11
下面这段程序:
String data = "-";
while(rs.next()) {
%>
<tr>
<%
for(i=0;i<count;i++)
{
System.err.println(i);

if(i == 5)
{
float temp = rs.getFloat(i+1);
data = Float.toString(db.SellPrice(temp));
}
else
{
data = rs.getString(i+1);
if(data==null)
data = "-";
}
System.err.println(data);
%>
<td><%=data%></td>
<%
}
}

下面出错提示,中间包含err.println的数出结果:
0

1000232

1

手术刀柄

2

3号-200MM

3

24

4



5

16.15

6

StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception

java.lang.NullPointerException

java.lang.NullPointerException

at oracle.jdbc.driver.ScrollableResultSet.getCachedDatumValueAt(ScrollableResultSet.java:1307)

at oracle.jdbc.driver.ScrollableResultSet.getOracleObject(ScrollableResultSet.java:398)

at oracle.jdbc.driver.ScrollableResultSet.getString(ScrollableResultSet.java:406)

at org.apache.jsp.main$jsp._jspService(main$jsp.java:167)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)

at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)

at java.lang.Thread.run(Thread.java:484)
可以看出,rs.getString前面6次循环成功执行,到第七次就突然抛出了异常!
和数据库中的数据没有任何关系,因为我把一次取的字段数降为6个时,就在
while(rs.next())处抛出异常!这就是说,这个rs只能用6次!这是什么鬼错误啊!我都要发疯了!

...全文
87 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
边城狂人 2004-10-08
那你后面两个字段是什么东西?是不是类似不对,或者数据有错?
问题很怪,我只能猜测。
回复
new_siberia 2004-10-07
就是把
for(i=0;i<count;i++)
{
改称
for(i=0;i<count-2;i++)
{
回复
new_siberia 2004-10-07
最新发现,我跳过两次循环就运行正常了,可是这样我就少了两个字段啊!!!
回复
new_siberia 2004-10-07
这真是见了鬼的错误!
回复
guojiafuzhuxi 2004-10-07
UP
回复
new_siberia 2004-10-07
没用的,我如果跳过最后一次循环,就会在rs.next()处触发异常!
回复
边城狂人 2004-10-07
你试试跳过第7次循环执行会怎么样,如果没有问题,就仔细看看第7行记录的数据,有可能跟数据有关系。
回复
bluesu27 2004-10-07
是不是你的数据行数没有那么多
当你运行到5时正好是6次,继续运行的话会取第7行,你是否有第7行呢
回复
边城狂人 2004-10-07
我看错了,你的程序没有问题啊!奇怪了
回复
边城狂人 2004-10-07
有可能这里,数据库里是空值
getString(index)
这个 index 是字段的编号,不是记录号
回复
new_siberia 2004-10-07
帮顶也有分!请大家帮忙!
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告