如果经常对数据库的表里的数据直接删除,经常性的直接删除,就会导致如下错误。
比如userId可能以前是从1开始递增的,但是你经常删除记录,导致上图这种变化,这种变化可能导致临时性的无法登录验证。
不过一般没问题。
还有经常报空指针错误如:java.lang.NullPointerException
像这种,比如如下这段代码
<%
TopicDao topicDao= new TopicDaoImpl();//得到主题Dao的实例
ReplyDao replyDao= new ReplyDaoImpl();//得到回复Dao的实例
UserDao userDao = new UserDaoImpl(); //得到用户Dao的实例
BoardDao boardDao = new BoardDaoImpl();
int boardId = Integer.parseInt(request.getParameter("boardId"));//板块id
int topicId = Integer.parseInt(request.getParameter("topicId"));
System.out.println(topicId);
int p = Integer.parseInt(request.getParameter("page"));
Board board = boardDao.findBoard(boardId);//取得该板块主题列表
Topic topic = topicDao.findTopic(topicId);//这里相当于用到了外键,做了查询功能
System.out.println(topic);//从控制台可以看出这里topic对象是空的
User topicUser = userDao.findUser(topic.getUserId());//这里有点问题,原因是ReplyDaoImpl.java的findListReply方法没有具体实现
List listReply = replyDao.findListReply(p, topicId);
System.out.println(listReply);
int prep = p;//页数
int nextp = p;
if(listReply.size()==20){
nextp = p+1;
}
if(p>1){
prep = p-1;
}
%>
页面反映的效果如下:
这里的listReply是空的,原因是我们可以设计很多关口,比如,在每个获取对象后面加上System.out.println(listReply);这样一句
就可以在控制台看到是否有数据
如上,可以看出listReply的值为空,所以List listReply = replyDao.findListReply(p, topicId);根本没有获取到
所以我们进一步看ReplyDao.java接口的实现类replyDaoImpl.java里面的findListReply()方法,可知,方法并未写方法体,或者方法体逻辑错误。
而我的就是没写方法体。