当前位置: 技术问答>java相关
关于jdbc异常:java.sql.SQLException: No data found 郁闷
来源: 互联网 发布时间:2015-07-03
本文导语: 我只是想让结果集中当前记录的srm字段与tmp的srm成员比较,如果相同则把当前记录的hz字段取出放到tmp的hz成员中,再将tmp存起来,直到结果集检索到尽头。 已经保证results中有很多元素。但是总出现标题所示的错误,...
我只是想让结果集中当前记录的srm字段与tmp的srm成员比较,如果相同则把当前记录的hz字段取出放到tmp的hz成员中,再将tmp存起来,直到结果集检索到尽头。
已经保证results中有很多元素。但是总出现标题所示的错误,经跟踪调试发现总和
results.getString("hz")有关,可results里是有元素的啊!如果想法将第二个results.getString("srm")去掉就没事了,但功能就变了。帮我看看吧!
while(!results.isAfterLast())
{
tmp.srm=results.getString("srm");
while(results.getString("srm").equals(tmp.srm)){
tmp.hz=tmp.hz+results.getString("hz");
results.next();
if(results.isAfterLast()) break;
}
sss.add(tmp);
}
已经保证results中有很多元素。但是总出现标题所示的错误,经跟踪调试发现总和
results.getString("hz")有关,可results里是有元素的啊!如果想法将第二个results.getString("srm")去掉就没事了,但功能就变了。帮我看看吧!
while(!results.isAfterLast())
{
tmp.srm=results.getString("srm");
while(results.getString("srm").equals(tmp.srm)){
tmp.hz=tmp.hz+results.getString("hz");
results.next();
if(results.isAfterLast()) break;
}
sss.add(tmp);
}
|
根据你的逻辑 ,是因为对同一行数据的某一字段做了两次操作就不可以了,这应当是驱动程序的问题。对于ResultSet这样的接口,影响是由实现造成的。
|
results就是不能两次取出srm地。
先定义一个变量放到里面去,就会好地。
先定义一个变量放到里面去,就会好地。
|
ResultSet就是不能这么用,你的功能只有做一个临时变量了。
|
普通的结果集是单向移动的,所以不能两次访问一个记录。从j2sdk1.4开始,jdbc开始支持双向移动的结果集,你可以试试。其实即使不能双向移动也没问题,你可以把结果级的数据保存到一个vector或类似的东西里面,数组也行,如果已知届国际中包含哪些字段和数据类型,为每条记录做一个数据类也可以,这样保存起来要方便一些,然后再做数据处理。