ResultSet的next()方法的问题
if(rs.next()){......}监视rs.next(),明明是true。为什么程序没有进入if内等...
if (rs.next()){
......
}
监视rs.next(),明明是true。为什么程序没有进入if内 等 展开
......
}
监视rs.next(),明明是true。为什么程序没有进入if内 等 展开
3个回答
展开全部
恩,rs.next不要用debug去监视,会出问题。
原因:这和debug有关,确切告诉你debug是会执行你所监视的代码的。有点抽象,不过拿你的rs.next()的来做例子就明白了。
打个比方,比如说rs里面有一个值,那么你肯定是认为rs.next为true。那么再执行一次rs.next()呢,那肯定就是false.同样的道理,debug中rs.next被你监视,当你看的他的结果时候,rs.next()被执行了一次,再到你的程序中if(rs.next()),这时它已经是被执行第2次了。所以他返回的是false.如果你真的很想监视这个变量,我的意见是:
boolean flag = rs.next();
if(flag)
监视flag.
不知道我说清楚了没。
原因:这和debug有关,确切告诉你debug是会执行你所监视的代码的。有点抽象,不过拿你的rs.next()的来做例子就明白了。
打个比方,比如说rs里面有一个值,那么你肯定是认为rs.next为true。那么再执行一次rs.next()呢,那肯定就是false.同样的道理,debug中rs.next被你监视,当你看的他的结果时候,rs.next()被执行了一次,再到你的程序中if(rs.next()),这时它已经是被执行第2次了。所以他返回的是false.如果你真的很想监视这个变量,我的意见是:
boolean flag = rs.next();
if(flag)
监视flag.
不知道我说清楚了没。
展开全部
如果你的空指针报错位置是在while(rst.next()),那你就要检查while循环里面是不是对rst做了什么操作有可能会导致rst变成null的
如果你的报错位置是在if (rst2.next()),那你就要检查执行rst2=stmt.executeQuery(...)的时候rst2是不是不为null了
目前知道就这两点
如果你的报错位置是在if (rst2.next()),那你就要检查执行rst2=stmt.executeQuery(...)的时候rst2是不是不为null了
目前知道就这两点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议使用while(rs.next()),既可以实现if (rs.next())的功能,又可以让rs的数据库光标自动移动
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询