sql = "select top "+pageSize+" *  from cor where 学号 not in (select top"+(pageSize*(pageNow-1))+"学号 from cor )";  
                   rs = stmt.executeQuery(sql);
错误报告说 参数不足 期待数是1.很可能就是 sql语句写错了,但不知道错在哪?
我给大家解释下 各个变量:pageSize  pageNow 都是变量 是int型。cor 是表名。 学号 是数据库表的一个字段名。
我用的是access 数据库,代码中也没有 加用户名 和密码,会不会是没用户名和密码的原因呢 
请各位大侠指教 谢谢诶

解决方案 »

  1.   

    你把sql 直接输出就知道了
      

  2.   

    sql = "select top "+pageSize+" * from cor where 学号 not in (select top"+(pageSize*(pageNow-1))+"学号 from cor )";   
    System.out.println(sql);
      rs = stmt.executeQuery(sql);
    应该是哪个值为空了。
      

  3.   

    [Quote=引用 2 楼  的回复:]sql = "select top "+pageSize+" * from cor where 学号 not in (select top"+(pageSize*(pageNow-1))+"学号 from cor )";   
    System.out.println(sql);
      rs = stmt.executeQuery(sql);
    应该是哪个值为空了。
    [/Quote怎么能看出来是空值呢 我输出了下 是这样的 select top 2* from cor where 学号 not in (select top0学号 from cor )
    这说明什么 没有空值呀 它说我这句有问题rs = stmt.executeQuery(sql);
      

  4.   

    调试一下 看pageSize pageNow 这两个值是否为空或者0;  如果是就是你传参没传进来
      

  5.   

    后台是这样显示的:
    select top 2 *  from cor where 学号 not in (select top0学号  from cor )2012-4-17 7:58:13 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet [jsp] in context with path [/stuCor] threw exception [An exception occurred processing JSP page /scan.jsp at line 4340:              }
    41:                sql = "select top "+pageSize+" *  from cor where 学号 not in (select top"+ pageSize*(pageNow-1) +"学号  from cor )";
    42:                    System.out.print(sql);
    43:                    rs = stmt.executeQuery(sql);
    44:                          
    45:                
    46:      %>
    Stacktrace:] with root cause
    java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1。
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
    at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
    at org.apache.jsp.scan_jsp._jspService(scan_jsp.java:107)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1805)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    请指教 谢谢
      

  6.   


    select top 2* from cor where 学号 not in (select top0学号 from cor )你在2*,top0学号
    改为2 * ,top 0 学号
    试试。也就是:select top 2 * from cor where 学号 not in (select top 0 学号 from cor )
      

  7.   


    sql = "select top "+pageSize+" * from cor where 学号 not in (select top "+(pageSize*(pageNow-1))+" 学号 from cor )"; 也就是加一个空格。
      

  8.   

    是不是你那个2和*号中间没有空格的原因。 把你打印出来的SQL在你数据库中执行的调试一下。应该不难
      

  9.   

    把sql打出来,在数据库执行,看那个地方报错!
      

  10.   

    sql = "select top "+pageSize+" *  from cor where 学号  not in(select  top " +pageSize*(pageNow-1)+" 学号  from cor )";
    后台说 我这句话语法有误 ?!
      

  11.   

    top 数字 * 之间没有空格。
    在拼接sql语句的时候,引号里面注意前后都+一个空格,可以保证不会把两个东西挤到一起去
      

  12.   

    System.out.println(sql);的内容是什么?