程序报错,请来识别错误,感谢。

朗晴 2018-01-22 09:55:24
已知是这一行程序的问题导致程序报错,请问应该怎么解决。



代码如下:


public Object query(String sql, String[] params, ResultSetHandler rsh)
{
QueryRunner qr = new QueryRunner(ds);
Object results = null;
try
{
results = qr.query(sql, params, rsh);//出错
} catch (SQLException e)
{
e.printStackTrace();
}
return results;


报错如下:

java.sql.SQLException: Wrong number of parameters: expected 1, was given 0 Query: select * from (select a.*,rownum r from (select * from guestbook wehere id=?) a where rownum <=10) where r>=1 Parameters: []
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:392)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:351)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:270)
at com.v512.util.OracleUtil.query(OracleUtil.java:73)
at com.v512.util.OraclePagination.getList(OraclePagination.java:123)
at com.v512.lesson15.ManageServlet.list(ManageServlet.java:99)
at com.v512.lesson15.ManageServlet.doGet(ManageServlet.java:134)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.v512.lesson15.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:26)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.v512.lesson15.AuthenticationFilter.doFilter(AuthenticationFilter.java:34)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1778)
at java.lang.Thread.run(Thread.java:662)
...全文
1075 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
110成成 2018-01-25
  • 打赏
  • 举报
回复
wehere 改成where 另外变量参数 个数不对,建议打印下变量数组。
LinY_X 2018-01-25
  • 打赏
  • 举报
回复
results = qr.query(sql, params, rsh);//出错 java.sql.SQLException: Wrong number of parameters: expected 1, was given 0 Query: select * from (select a.*,rownum r from (select * from guestbook wehere id=?) a where rownum <=10) where r>=1 Parameters: [] 问题1. sql语句中有一个?,但是parms是却是空的,应该sql中有几个?,params的元素个数就是多少 问题2. qr.query标黄,是表示这个方法已经过时了,可以改为 public <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) throws SQLException { 也就是 results = qr.query(sql, rs,params); 问题3. sql语句里面有个where拼成了wehere
anonyomusx 2018-01-24
  • 打赏
  • 举报
回复
看第一行就行
  • 打赏
  • 举报
回复
一个id对应一个数组[] 对应关系的个数不正确
c230704 2018-01-24
  • 打赏
  • 举报
回复
还有这种操作
maradona1984 2018-01-24
  • 打赏
  • 举报
回复
java.sql.SQLException: Wrong number of parameters: expected 1, was given 0 Query 说的很清楚啊,错误的参数数量,预期1,只给了0
my_name_nb 2018-01-24
  • 打赏
  • 举报
回复
java.sql.SQLException: Wrong number of parameters: expected 1, was given 0 Query: select * from (select a.*,rownum r from (select * from guestbook wehere id=?) a where rownum <=10) where r>=1 Parameters: [] 报错不是很明显了吗 参数类型传入错误
qq_41228556 2018-01-24
  • 打赏
  • 举报
回复
兄弟,select * from guestbook wehere id=? 你的sql都拼接错了啊,是where吧
木子0204 2018-01-23
  • 打赏
  • 举报
回复
不是提示你sql异常了嘛 把你输入的参数和sql在数据库里面执行下具体看下是什么问题不就知道了嘛
xls丶 2018-01-23
  • 打赏
  • 举报
回复
你看看
xls丶 2018-01-23
  • 打赏
  • 举报
回复
用的dbutil?用了占位符没有给参数啊
林二棍子 2018-01-23
  • 打赏
  • 举报
回复
sql语句中有一个'?'占位符,因此params数组中应当有个id变量值,比如: params = new String[] {"123456"}; qr.query(sql, params, rsh); 至于调用query有一个黄色的警告,query被画上一条删除线,是因为这个函数被标记为 @deprecated 意思是过期,不建议使用。
朗晴 2018-01-22
  • 打赏
  • 举报
回复
显示是:qr.query(sql, params, rsh) 中的 query 一条横杠 ;我也不知道是什么意思,能不能正常编译?
oyljerry 2018-01-22
  • 打赏
  • 举报
回复
params有没有填入正确的伧俗数据

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧