executeQueryERR:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: ')' 附近有语法错误。
java.lang.NullPointerException
at org.apache.jsp.search_005fdo_jsp._jspService(org.apache.jsp.search_005fdo_jsp:303)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)

解决方案 »

  1.   

    SQL 语句中有语法错误,把你的SQL语句贴出来看看!
      

  2.   

    vacuumboy(好好学习,天天向上):我的qq也叫“好好学习”诶!哈哈!
     <%String sql="select AIRPORT_IATA from SAirport where CITY_IATA=(select CITY_IATA from SCity where NAME_CHINESE like'%"+city1+"%'))";
          ResultSet res = dbt.executeQuery(sql);
          String airport1=res.getString("AIRPORT_IATA");
          for(int i=1;i<8;i++)
          { String airport2=rs.getString("AIRPORT"+i);
          if(airport1.equals(airport2))
           %>
            <td  bgcolor="<%=color%>"><font color="#FFFFFF"><%temp=(rs.getString("STD"+i)==null?"暂无数据  ":rs.getString("STA"+i));out.println(temp);%></font></td>
            <% }
            sql="select AIRPORT_IATA from SAirport where CITY_IATA=(select CITY_IATA from SCity where NAME_CHINESE like'%"+city2+"%'))";
           res = dbt.executeQuery(sql);
           airport1=res.getString("AIRPORT_IATA");
           out.print("airport1");
          for(int i=1;i<8;i++)
          { String airport2=rs.getString("AIRPORT"+i);
          if(airport1.equals(airport2))
           %>
            <td  bgcolor="<%=color%>"><font color="#FFFFFF"><%temp=(rs.getString("STA"+i)==null?"暂无数据  ":rs.getString("STD"+i));out.println(temp);%></font></td>
           <%}%>
      

  3.   

    空指针异常,在JSP或Servlet中利用out输出测试
      

  4.   

    养成习惯,sql错就要想办法输出执行前的sql来看看
      

  5.   

    select AIRPORT_IATA from SAirport where CITY_IATA=(select CITY_IATA from SCity where NAME_CHINESE like'%"+city1+"%'))";
    怎么看都多了个括号
      

  6.   

    是诶!
    还有其他错误!
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.base.BaseResultSet.validateCursorPosition(Unknown Source)
    at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
    at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
    at org.apache.jsp.search_005fdo_jsp._jspService(org.apache.jsp.search_005fdo_jsp:302)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
      

  7.   

    String sql="select AIRPORT_IATA from SAirport where CITY_IATA=(select CITY_IATA from SCity where NAME_CHINESE like'%"+city1+"%'))";为什么有2个括弧结尾
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: ')' 附近有语法错误
    这已经提示的很清楚了啊
      

  8.   

    select AIRPORT_IATA from SAirport where CITY_IATA in (select CITY_IATA from SCity where NAME_CHINESE like'%"+city1+"%')";改成这个试试,估计你里面那个sql查出来的值有问题
      

  9.   

    CITY_IATA=(......)
    改成CITY_IATA in (......)
      

  10.   

    ResultSet res = dbt.executeQuery(sql);
    if (!res.next()){
    String airport1=res.getString("AIRPORT_IATA");
          for(int i=1;i<8;i++)
          { String airport2=rs.getString("AIRPORT"+i);
          if(airport1.equals(airport2))
           %>
            <td  bgcolor="<%=color%>"><font color="#FFFFFF"><%temp=(rs.getString("STD"+i)==null?"暂无数据  ":rs.getString("STA"+i));out.println(temp);%></font></td>
            <% }
            sql="select AIRPORT_IATA from SAirport where CITY_IATA=(select CITY_IATA from SCity where NAME_CHINESE like'%"+city2+"%'))";
           res = dbt.executeQuery(sql);
           airport1=res.getString("AIRPORT_IATA");
           out.print("airport1");
          for(int i=1;i<8;i++)
          { String airport2=rs.getString("AIRPORT"+i);
          if(airport1.equals(airport2))
           %>
            <td  bgcolor="<%=color%>"><font color="#FFFFFF"><%temp=(rs.getString("STA"+i)==null?"暂无数据  ":rs.getString("STD"+i));out.println(temp);%></font></td>
           <%}%>
    <%}%>
      

  11.   

    lxrxyls(行云流水) :我发现这个问题了!改了可是说[Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
     <%String sql="select AIRPORT_IATA from SAirport where CITY_IATA in(select CITY_IATA from SCity where NAME_CHINESE ='"+city1+"')";
          ResultSet res = dbt.executeQuery(sql);
        String airport1;
          while(res.next())
          { airport1=res.getString("AIRPORT_IATA");
          for(int i=1;i<8;i++)
          { String airport2=rs.getString("AIRPORT"+i);
          if(airport1.equals(airport2))
           %>
            <td  bgcolor="<%=color%>"><font color="#FFFFFF"><%temp=(rs.getString("STD"+i)==null?"暂无数据  ":rs.getString("STA"+i));out.println(temp);%></font></td>
            <% }}
            sql="select AIRPORT_IATA from SAirport where CITY_IATA in(select CITY_IATA from SCity where NAME_CHINESE ='"+city2+"')";
           res = dbt.executeQuery(sql);
            while(res.next())
         {  airport1=res.getString("AIRPORT_IATA");
          for(int i=1;i<8;i++)
          { String airport2=rs.getString("AIRPORT"+i);
          if(airport1.equals(airport2))
           %>
            <td  bgcolor="<%=color%>"><font color="#FFFFFF"><%temp=(rs.getString("STA"+i)==null?"暂无数据  ":rs.getString("STD"+i));out.println(temp);%></font></td>
           <%}}%>
            <td  bgcolor="<%=color%>"><font color="#FFFFFF"><%temp=(rs.getString("AIRPORT1")==null?"暂无数据  ":rs.getString("AIRPORT1"));out.println(temp);%></font></td>
            </tr>
      

  12.   

    1、String airport2=rs.getString("AIRPORT"+i);
    你的SQL语句中只有AIRPORT_IATA ,AIRPORT1到AIRPORT8从哪里来的。
    2、 if(airport1.equals(airport2))后的语句应该用{}括起来if(airport1.equals(airport2))
           {%>
            <td  bgcolor="<%=color%>"><font color="#FFFFFF"><%temp=(rs.getString("STD"+i)==null?"暂无数据  ":rs.getString("STA"+i));out.println(temp);%></font></td>
      <%}%>
      

  13.   

    SQL="Select * from IWeeksSched";rs = dbt.executeQuery(SQL);
    rs.getString("AIRPORT"+i);是执行上面的啊!这个是rs.而不是res.