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 数据库,代码中也没有 加用户名 和密码,会不会是没用户名和密码的原因呢
请各位大侠指教 谢谢诶
System.out.println(sql);
rs = stmt.executeQuery(sql);
应该是哪个值为空了。
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);
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)
请指教 谢谢
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 )
sql = "select top "+pageSize+" * from cor where 学号 not in (select top "+(pageSize*(pageNow-1))+" 学号 from cor )"; 也就是加一个空格。
后台说 我这句话语法有误 ?!
在拼接sql语句的时候,引号里面注意前后都+一个空格,可以保证不会把两个东西挤到一起去