源代码:
  </head>
  <body background="image/bkic017.gif">
<%
try{
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   String url="jdbc:mysql://localhost/charge?user=root&password=123";
   Connection conn =DriverManager.getConnection(url);
   Statement smt =conn.createStatement();
   ResultSet rs;  
   String sql;
  String check =request.getParameter("check");
  
  sql="select count(Snumber) as total1 from students where sfjf=1 and grade ="+check;
  rs =smt.executeQuery(sql);}
  catch(Exception e){
  e.printStackTrace();
  }
while(rs.next()){
  %>
  本年度所交总金额为: <%=rs.getFloat("total1")%>
  </body>
  </html>
  <%}
  
 rs.close();
 smt.close();
 conn.close();
  %>

出错信息:

exception org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 14 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 31 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
smt cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
conn cannot be resolved
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
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 cause org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 14 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 31 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
rs cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
smt cannot be resolvedAn error occurred at line: 34 in the jsp file: /countjf.jsp
Generated servlet error:
conn cannot be resolved
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:414)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
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)

解决方案 »

  1.   

    jsp页面有错吧!An error occurred at line: 14 in the jsp file: /countjf.jsp 是不是没有导入java.sql.*啊
      

  2.   

    sql="select count(Snumber) as total1 from students where sfjf=1 and grade ='" + check + "'"; 
      

  3.   

    rs在try{}中定义,
    后面这些
     
    catch(Exception e){ 
      e.printStackTrace(); 
      } 
    while(rs.next()){ 
      %> 
      本年度所交总金额为: <%=rs.getFloat("total1")%> 
      </body> 
      </html> 
      <%} 
      
    rs.close(); 
    smt.close(); 
    conn.close();
     
    对rs的引用都无效。
    把rs的定义提前。在try之前写ResultSet rs = null;
    conn,smt也一样要改。
    另外在关闭时要改为
    if(rs!=null)
      rs.close();
      

  4.   

    rs, sql 初始化为null。你用Statement创建语句有注入的危险,最好用prepareStatement做 String sql = "select count(Snumber) as total1 from students where sfjf=1 and grade=?";
     ps = conn.prepareStatement(sql);
     ps.setString(1, check );
      

  5.   

    jsp页面都不能编译了,肯定是页面错了,都显示出31 34 行了,好好检查一下!
      while(rs.next()){ 
      %> 
      本年度所交总金额为: <%=rs.getFloat("total1")%> 
      </body> 
      </html> 
      <%} 
      
    rs.close(); 
    smt.close(); 
    conn.close(); 
      %> 
    认真些~~
      

  6.   

    还是有错
    org.apache.jasper.JasperException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '???ê??' at line 1
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    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)
      

  7.   

    SQL错误。看看是不是字符乱码问题还是别的其他问题。将SQL语句输出就容易看出来了
      

  8.   

    你真牛,
     sql="select count(Snumber) as total1 from students where sfjf=1 and grade ="+check; //count()你查出来会给你列明吗?
      while(rs.next()){ 
      %> 
      本年度所交总金额为: <%=rs.getFloat(0)%>//用下标,反正数只还回了一列 
      </body> 
      </html> 
      <%}