这是一个jsp页面的代码 其中的Article 和DBase 类是用到的JavaBean类
请各位注意看这段代码的sql语句 这个语句 如果用被我注释了的sql语句
就会在while(rs.next()) 这里抛出 NullPointerException
而使用第二个sql语句 和第一个的差别就是不按时间排序 就可以正常运行
谁能给我解释为什么呢?
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import=" java.sql.*,com.libra.bbs.* " %>
<%
String strid = request.getParameter("id");
if(strid == null || strid.trim().equals("")){
out.println("ERROR ID !!");
}
int id = 0;
try{
id = Integer.parseInt(strid);
}catch(NumberFormatException e){
e.printStackTrace();
out.println("ERROR ID!!");
}
//String sql = "select * from article where rootid ="+ id +"order by pdate asc";
String sql = "select * from article where rootid ="+ id ;Connection conn = DBase.getConn();
Statement stmt = DBase.createStmt(conn);
ResultSet rs = DBase.executeQuery(stmt,sql);
Article ar = null ;
int i =0 ;
while(rs.next()){//异常报错的地方
ar = new Article ();
ar.initFromRs(rs);
String floor = i==0? "楼主" :"第"+i+"楼";
i++ ;
String cont = ar.getCont().replaceAll("\n","<br>");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body><table border ="1" width="400">
<tr>
<td > <font color="#0011ff">主题:<%=ar.getTitle()+"----------"+floor %> </font></td>
</tr>
<tr><td><font color="#df11de"><%= cont %></font></td></tr></table>
<%
}
%>
<a href="Reply.jsp?id=<%=ar.getId()%>&rootid=<%=ar.getRootId()%>"> 回帖</a>
<%
DBase.close(rs);
DBase.close(stmt);
DBase.close(conn);
if(ar == null){
%>
<font color ="ff11aa">你找的帖子不存在,请选择别的帖子。</font>
<%
return ;
}
%></body>
</html>
请各位注意看这段代码的sql语句 这个语句 如果用被我注释了的sql语句
就会在while(rs.next()) 这里抛出 NullPointerException
而使用第二个sql语句 和第一个的差别就是不按时间排序 就可以正常运行
谁能给我解释为什么呢?
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import=" java.sql.*,com.libra.bbs.* " %>
<%
String strid = request.getParameter("id");
if(strid == null || strid.trim().equals("")){
out.println("ERROR ID !!");
}
int id = 0;
try{
id = Integer.parseInt(strid);
}catch(NumberFormatException e){
e.printStackTrace();
out.println("ERROR ID!!");
}
//String sql = "select * from article where rootid ="+ id +"order by pdate asc";
String sql = "select * from article where rootid ="+ id ;Connection conn = DBase.getConn();
Statement stmt = DBase.createStmt(conn);
ResultSet rs = DBase.executeQuery(stmt,sql);
Article ar = null ;
int i =0 ;
while(rs.next()){//异常报错的地方
ar = new Article ();
ar.initFromRs(rs);
String floor = i==0? "楼主" :"第"+i+"楼";
i++ ;
String cont = ar.getCont().replaceAll("\n","<br>");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body><table border ="1" width="400">
<tr>
<td > <font color="#0011ff">主题:<%=ar.getTitle()+"----------"+floor %> </font></td>
</tr>
<tr><td><font color="#df11de"><%= cont %></font></td></tr></table>
<%
}
%>
<a href="Reply.jsp?id=<%=ar.getId()%>&rootid=<%=ar.getRootId()%>"> 回帖</a>
<%
DBase.close(rs);
DBase.close(stmt);
DBase.close(conn);
if(ar == null){
%>
<font color ="ff11aa">你找的帖子不存在,请选择别的帖子。</font>
<%
return ;
}
%></body>
</html>
我在数据库里运行也正常啊
" order by pdate asc"