出错提示为:
org.apache.jasper.JasperException: Unable to compile class for JSPD:\tomcat\work\localhost_8080%2Fexamples\_0002fforum_00031_0002fdatabase_0002ejspdatabase_jsp_0.java:89: ??????conn
                 conn = DriverManager.getConnection("jdbc:odbc:forum","sa",""); 
                 ^
1 ???

解决方案 »

  1.   

    为定义变量,加上 Connection conn;试一试。
      

  2.   

    代码:(******处)
    <%@ page import="java.io.*"%> 
    <%@ page import="java.util.*"%> 
    <%@ page import="java.sql.*"%> 
    <%@ page import="javax.servlet.*"%> 
    <%@ page import="javax.servlet.http.*"%> <% 
        String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";  
    try{ 
    try{    
    Class.forName(sDBDriver); 

    catch(java.lang.ClassNotFoundException e){
    out.print("Connect to Database error: " + e.getMessage());
    }try{          
    Connection conn = DriverManager.getConnection("jdbc:odbc:forum","sa",""); //******
    }
    catch(SQLException e){
    out.print(e.toString());
    }

        catch (Exception e) {} %> 
      

  3.   

    加了 Connection 后上段能通过,
    可我后面加上代码
    Statement stmt=conn.createStatement(); String strSQL="SELECT * FROM users";
    ResultSet rs=stmt.executeQuery(strSQL);
    后程序又有问题,完整代码为:
    <%@ page import="java.io.*"%> 
    <%@ page import="java.util.*"%> 
    <%@ page import="java.sql.*"%> 
    <%@ page import="javax.servlet.*"%> 
    <%@ page import="javax.servlet.http.*"%> <% 
        String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";   
    try{ 
    try{     
    Class.forName(sDBDriver); 
    }
    catch(java.lang.ClassNotFoundException e){
    out.print("Connect to Database error: " + e.getMessage());
    } try{          
    Connection conn = DriverManager.getConnection("jdbc:odbc:forum","sa",""); 
    }
    catch(SQLException e){
    out.print(e.toString());
    }

        catch (Exception e) {} 
     
    Statement stmt=conn.createStatement(); String strSQL="SELECT * FROM users";
    ResultSet rs=stmt.executeQuery(strSQL); %>
           出错提示为:
    Internal Servlet Error:org.apache.jasper.JasperException: Unable to compile class for JSPD:\tomcat\work\localhost_8080%2Fexamples\_0002fforum_00031_0002fmenu_0002ejspmenu_jsp_17.java:99: ?????????conn
                     Statement stmt=conn.createStatement();
    为什么?
      

  4.   


    Statement stmt=conn.createStatement();
    String strSQL="SELECT * FROM users";
    ResultSet rs=stmt.executeQuery(strSQL);
    之前加一句
    conn = DriverManager.getConnection("jdbc:odbc:forum","sa",""); 
    试一试
      

  5.   

    我的理解conn在此处没有定义。可以把这几句加到
    try{          
    Connection conn = DriverManager.getConnection("jdbc:odbc:forum","sa",""); 
    }

    这样就省去那一句。
      

  6.   

    zzh54zzh:
    还有一个问题:我在上面代码后面加上:<%
    while(rs.next())
    {
    %>
    <A href="list.jsp?key=<%=rs.getString(1)%>"><%=rs.getString(1)%></A></TD></TR>
    <%
    }
    rs.close();
    stmt.close();
    conn.close();
    %>
    不能通过,但是去掉 key=<%=rs.getString(1)%> 或改成 key=常数 就能通过, 为什么?
      

  7.   

    问题可能是users表中的字段类型不是String的,
    用rs.getInt()。
      

  8.   

    users 表中的字段类型是 varchar 的,
    该用什么方法取得呢?
      

  9.   

    rs.getString(1)不能取2次,记住只能取一次,而且要按顺序。在odbc的通常版本均为如此如:
    <%
    String tempstr = "";
    while(rs.next())
    {
    tempstr = rs.getString(1);
    %>
    <A href="list.jsp?key=<%=tempstr%>"><%=tempstr%></A>
    <%
    }
    rs.close();
    stmt.close();
    conn.close();
    %>try当中定义的变量离开了try就会失效--局部变量。 所以先把Connection conn在外面定义。