出错提示如下:org.apache.jasper.JasperException: Exception in JSP: /zongping/z_item.jsp:167164: for (i = 1; i <= (intPage - 1) * pageLine; i++)
165: rs.next();
166: for (i = 1; i <= pageLine; i++) {
167: if (rs.next()) {
168: String item_ID = rs.getString("item_ID");
169: String unit_ID = rs.getString("unit_ID");
170: String item_name = rs.getString("item_name");
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causejava.lang.NullPointerException
org.apache.jsp.zongping.z_005fitem_jsp._jspService(z_005fitem_jsp.java:222)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
165: rs.next();
166: for (i = 1; i <= pageLine; i++) {
167: if (rs.next()) {
168: String item_ID = rs.getString("item_ID");
169: String unit_ID = rs.getString("unit_ID");
170: String item_name = rs.getString("item_name");
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causejava.lang.NullPointerException
org.apache.jsp.zongping.z_005fitem_jsp._jspService(z_005fitem_jsp.java:222)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
<%@ page language="java" import="java.sql.*" contentType="text/html;charset=GB2312"%>
<jsp:useBean id="z_item" scope="page" class="opendb.opendb" />
<%
String sort = "网络";//request.getParameter("sort"); String sqlstring = "select * from I_item as x where sort like '%"
+ sort
+ "%' order by (select avg(score6) from I_distribute as y where y.item_ID=x.item_ID) desc";
String sql1 = "select count(*)as cnt from I_item"; ResultSet rs = z_item.executeQuery(sqlstring); int pageLine = 10;
int totalRec = 0;
int intPage = 1;
int i;
if (request.getParameter("page") != null)
intPage = Integer.parseInt(request.getParameter("page"));
try {
ResultSet countrs = z_item.executeQuery(sql1);
if (countrs.next())
totalRec = countrs.getInt("cnt");
countrs.close();
z_item.closeStmt();
} catch (Exception e) {
e.printStackTrace();
}
int intPageCount = 0;
intPageCount = (totalRec + pageLine - 1) / pageLine;
%>关键代码如下:太长了只能分开发,还请各位仁兄多指教!!
<tr>
<td>
<img src="../images/z_list1.gif" width="140" height="23" usemap="#Map" border="0">
</td>
</tr>
<tr>
<td>
<form name=theform method=post action="z_item.jsp">
<table width="100%" border="0" cellspacing="1" cellpadding="1" align="center">
<tr>
<td colspan="2" bgcolor="#d9d8dc"></td>
</tr>
<tr>
<td bgcolor="#d9d8dc" colspan="2" align="center">
<p>
</p>
</td>
</tr>
<tr>
<td bgcolor="#d9d8dc" align="center" width="25%">
<font color="#000099">选择项目类别</font>
</td>
<td>
<select name=sort>
<option selected value="网络">
---请选择---
</option>
<option value="软件外包"></option>
<option value="计算机科学"></option>
<option value="经营管理"></option> </select> </td>
</tr>
<tr>
<td bgcolor="#d9d8dc" align="center" colspan="2">
</td>
</tr>
<tr bgcolor="#d9d8dc" align="center">
<td colspan="2">
<input type=image src="../images/refer.gif" width="62" height="22" name="refer">
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td>
<font size="2" color="#000099"> 按* *<%=sort%>查询</font>
<br>
<table width="100%" border="1" bordercolor="#CCCCCC" cellpadding="0" cellspacing="0">
<tr>
<td width="20%" height="17" bgcolor="#d9d8dc">
<font size="2" color="#000099">项目名称</font>
</td>
<td width="20%" height="17" bgcolor="#d9d8dc">
<font size="2" color="#000099">申报单位</font>
</td>
<td width="20%" height="17" bgcolor="#d9d8dc">
<font size="2" color="#000099">申请者</font>
</td>
<td width="20%" height="17" bgcolor="#d9d8dc">
<font size="2" color="#000099">申报日期</font>
</td>
<td width="20%" height="17" colspan="2" bgcolor="#d9d8dc">
<font size="2" color="#000099">平均分</font>
</td>
</tr>
<%
String savg = "";
if (intPageCount > 0) {
for (i = 1; i <= (intPage - 1) * pageLine; i++)
rs.next();
for (i = 1; i <= pageLine; i++) {
if (rs.next()) {
String item_ID = rs.getString("item_ID");
String unit_ID = rs.getString("unit_ID");
String item_name = rs.getString("item_name"); String sql3 = "select avg(score6) as savg from I_distribute where item_ID='"
+ item_ID + "' and score6>0";
ResultSet rs3 = z_item.executeQuery(sql3);
if (rs3.next()) {
savg = rs3.getString("savg");
if (savg == null) {
savg = " ";
} else {
savg = savg.substring(0, 4);
}
}
String applicant = rs.getString("applicant");
String fill_date = (rs.getString("fill_date"));
String unit_name = "";
String sql2 = "select unit_name from I_s_info where unit_ID='"
+ unit_ID + "'";
ResultSet rs2 = z_item.executeQuery(sql2);
if (rs2.next()) {
unit_name = rs2.getString("unit_name");
}
%>
<tr>
<td>
<font size="2" color="#000099"><a href="z_showItem.jsp?item_ID=<%=item_ID%>"><%=item_name%>
</a> </font>
</td>
<td>
<font size="2" color="#000099"><%=unit_name%> </font>
</td>
<td>
<font size="2" color="#000099"><%=applicant%> </font>
</td>
<td>
<font size="2" color="#000099"><%=fill_date%> </font>
</td>
<td>
<font size="2" color="#000099"><%=savg%> </font>
</td>
</tr>
<%
}
}
}
%>
</table>
else String item_ID = "";下面这两个也一样.
String unit_ID = rs.getString("unit_ID");
String item_name = rs.getString("item_name");RS.NEXT 只说明有记录,但不表明每个字段都会有值,所以可能出现有NULL值的情况.
一开始的错误信息
167: if (rs.next()) {
行出错的话,有可能是查询后connection给关了
package opendb;
import java.sql.*;public class opendb
{
String strDBDriver="oracle.jdbc.driver.OracleDriver";
String strDBUrl="jdbc:oracle:thin:@127.0.0.1:1521:oradb01";
private Connection conn=null;
private Statement stmt=null;
ResultSet rs=null;
//<!--注册数据库驱动程序-->
public opendb()
{
try
{
Class.forName(strDBDriver);
}
//异常处理
catch(java.lang.ClassNotFoundException e)
{
System.err.println("opendb():"+e.getMessage());
}
}
//<!--建立数据库连接及定义数据查询-->
public ResultSet executeQuery(String sql)
{
rs=null;
try
{
conn=DriverManager.getConnection(strDBUrl,"system","mima123");//创建数据库连接对象
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery:"+ex.getMessage());
}
return rs;
}
//<!--定义数据操作-->
public void executeUpdate(String sql)
{
stmt=null;
rs=null;
try
{
conn=DriverManager.getConnection(strDBUrl,"system","mima123");
stmt=conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery:"+ex.getMessage());
}
}
//<!--关闭数据库连接-->
public void closeStmt()
{
try
{
stmt.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
public void closeConn()
{
try
{
conn.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
} 大哥QQ号多少呀,可以交个朋友吗?
rs.next();
for (i = 1; i <= (intPage - 1) * pageLine; i++)后面少了一个{,
造成循环做了,rs.next();
for ()循环和While不是一样的吗?能说清楚点吗?不懂!
----------------------------------------------------------------------
差多了,首先while是先判断再执行,而for在执行次数上就要多一个,其次,代码优化,代码效率都是while要好得多。