空指针异常阿,你把pages.jsp贴出来吧

解决方案 »

  1.   

    <%@ page contentType="text/html; charset=GB2312" %>
    <%@ page import="java.sql.*" %>
    <%@ page language="java" %>
    <%!
    String searchBookID = null ;
    String searchDate1 = null ;
    String searchDate2 = null ;
    String searchPrice1 = null ;
    String searchPrice2 = null ;
    int PageSize = 2; //设置每张网页显示两笔记录
    int ShowPage = 1; //设置欲显示的页数
    int RowCount = 0; //ResultSet的记录笔数
    int PageCount = 0; //ResultSet分页后的总页数
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;
    %>
    <%
    searchBookID = request.getParameter("textBookID");
    searchDate1 = request.getParameter("textDate1");
    searchDate2 = request.getParameter("textDate2");
    searchPrice1 = request.getParameter("textPrice1");
    searchPrice2 = request.getParameter("textPrice2");
    String sql = "select * from book" ;
    if ( !searchBookID.equals("") )
    {
    sql += " where BookID = '" + searchBookID +"'";
    }
    else
    {
    sql += " where BookID like '%' ";
    }
    if( !searchDate1.equals("") )
    {
    sql += " and PDate >= #" + searchDate1 + "# and PDate <= #" + searchDate2 + "#";
    }
    if( !searchPrice1.equals("") )
    {
       sql += " and Price >= " + searchPrice1 + " and Price <= " + searchPrice2 ;
    }
    %>
    <%
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //载入驱动程序类别
    con = DriverManager.getConnection("jdbc:odbc:BookDB"); //建立数据库链接
    //建立Statement对象, 并设置记录指标类型为可前后移动
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
       ResultSet.CONCUR_READ_ONLY);
    System.out.println( sql );
    rs = stmt.executeQuery( sql ); //建立ResultSet(结果集)对象,并执行SQL语句
    rs.last(); //将指标移至最后一笔记录
    RowCount = rs.getRow(); //取得ResultSet中记录的笔数
    //计算显示的页数
    PageCount = ((RowCount % PageSize) == 0 ? 
    (RowCount/PageSize) : (RowCount/PageSize)+1);
    %>
    <HTML>
    <HEAD>
    <TITLE>高级搜索</TITLE>
    </HEAD>
    <BODY>
    <CENTER>
    <FONT SIZE = 5 COLOR = blue>高级搜索</FONT>
    </CENTER>
    <BR>
    <HR>
    <BR>
    <CENTER>
    <BR>
    <%
    String ToPage = request.getParameter("ToPage");
    if(ToPage != null) //判断是否可正确取得ToPage参数
    {
    ShowPage = Integer.parseInt(ToPage);  //取得指定显示的分页页数
    if(ShowPage > PageCount)  //下面的if语句将判断用户输入的页数是否正确
    {
    ShowPage = PageCount;  //判断指定页数是否大于总页数, 是则设置显示最后一页
    }
    else if(ShowPage <= 0)
    {
    ShowPage = 1;  //若指定页数小于0, 则设置显示第一页的记录
    }
    }
    rs.absolute((ShowPage - 1) * PageSize + 1);  //计算欲显示页的第一笔记录位置
    %>
    <H3>当前在第<FONT SIZE = 4 COLOR = red>
    <%= ShowPage %></FONT>页, 共
    <FONT SIZE = 4 COLOR = red>
    <%= PageCount %></FONT>页</H3>
    <BR>
    <%
    //利用For循环配合PageSize属性输出一页中的记录
    for(int i = 1; i <= PageSize; i++)
    {
    %>
    <TABLE border=1 bordercolor=RoyalBlue bgcolor=LightBlue>
    <TR><TD bgcolor=LightYellow width= 100>
    <B>书籍编号</B></TD>
    <TD width= 100><B><%= rs.getString("BookID") %>
    </B></TD>
    <TD bgcolor=LightYellow width= 100>
    <B>出版日期</B></TD>
    <TD width= 100><B><%= rs.getDate("PDate") %>
    </B></TD>
    <TD bgcolor=LightYellow width= 100>
    <B>总页数</B></TD>
    <TD width= 100><B><%= rs.getString("Pages") %>
    </B></TD>
    <TD bgcolor=LightYellow width= 100>
    <B>价  格</B></TD>
    <TD width= 100><B><FONT SIZE = 4 COLOR = red><B>
    <%= rs.getInt("Price") %>
    </B></FONT></TD>
    </TR>
    <TR>
    <TD bgcolor=LightYellow ><B>书籍名称</B></TD>
    <TD Colspan=5 width=500><B><%= rs.getString("Title") %>
    </B></TD>
    </>
    <TD bgcolor=LightYellow ><B>作  者</B></TD><TD width= 100>
    <B><%= rs.getString("Author") %></B></TD>
    </TR>
    <TR><TD bgcolor=LightYellow ><B>备  注</B></TD>
    <TD COLSPAN = 7 width= 700>
    <B><%= rs.getString("BookMemo") %></B></TD>
    </TR>
    </TABLE><BR>
    <%
    //下面的if判断语句用于防止输出最后一页记录时, 
    //将记录指标移至最后一笔记录之后
    if(!rs.next())  //判断是否到达最后一笔记录
    break;  //跳出for循环
    }
    %>
    <TABLE>
    <TR valign=baseline align=center>
    <%
    //判断目前所在分页是否为第一页,
    //不是则显示到第一页与上一页的超链接
    if(ShowPage != 1)
    {
    //下面建立的各超链接将链接至自己, 
    //并将欲显示的分页以ToPage参数传递给自己
    %>
      <TD Width=150> <A Href=pages.jsp?ToPage=<%= 1 %>>到第一页</A> </TD>
      <TD Width=150> <A Href=pages.jsp?ToPage=<%= ShowPage - 1 %>>到上一页</A> </TD>
    <%
    }
    //判断目前所在分页是否为最后一页,
    //不是则显示到最后一页与下一页的超链接
    if(ShowPage != PageCount)
    {
    //下面建立的各超链接将链接至自己, 
    //并将欲显示的分页以ToPage参数传递自己
    %>
      <TD Width=150> <A Href=pages.jsp?ToPage=<%= ShowPage + 1%>>到下一页</A> </TD>  
      <TD Width=150> <A Href=pages.jsp?ToPage=<%= PageCount %>>到最后一页</A> </TD>
    <%
    rs.close(); //关闭ResultSet对象
    stmt.close(); //关闭Statement对象
    con.close(); //关闭数据库链接对象
    }
    %>
    <TD Width=150>
    <FORM action=pages.jsp method=POST>
              到 
              <INPUT type="text" name=ToPage style="HEIGHT: 25px; WIDTH: 40px"
     value=<%= ShowPage%> > 页
    </FORM></TD></TR>
    </TABLE>
    </CENTER>
    </BODY>
    </HTML>