Parameter index out of range (1 > number of parameters, which is 0).] with r

r囧r小猫 2022-08-18 00:43 113阅读 0赞

遇到Parameter index out of range (1 > number of parameters, which is 0)怎么办?
2011年05月12日 星期四 23:45

遇到了Parameter index out of range (1 > number of parameters, which is 0) ,检查了很多遍错误。最后终于发现,原来PreparedStatement的sql中?是不能带有’单引号的。谢天谢地…一个很简单的失误,我折腾了4个钟头,忘大家引以为戒啊…

  1. // 查询指定用户
  2. public User_table selOperation(String id) {
  3. String sql = "select * from user_table where Id='?' ";
  4. User_table user = null;
  5. try {
  6. PreparedStatement pst = (PreparedStatement) AdoOpen.openConn()
  7. .prepareStatement(sql);
  8. pst.setString(1, id);
  9. ResultSet rs = pst.executeQuery();
  10. if (rs.next()) {
  11. user = new User_table();
  12. user.setId(rs.getString(1));
  13. user.setName(rs.getString(2));
  14. user.setPassword(rs.getString(3));
  15. user.setOnline(rs.getInt(4));
  16. user.setQita(rs.getString(5));
  17. }
  18. rs.close();
  19. pst.close();
  20. //AdoOpen.CloseConn();
  21. } catch (SQLException e) {
  22. e.printStackTrace();
  23. }
  24. return user;
  25. }
  26. java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
  27. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
  28. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
  29. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
  30. at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3326)
  31. at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3310)
  32. at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4146)
  33. at ado.User_ADO.selOperation(User_ADO.java:60)
  34. at unit.ProssSeverl.rundom(ProssSeverl.java:95)
  35. at unit.ProssSeverl.regidit(ProssSeverl.java:71)
  36. at unit.ProssSeverl.Dealwith(ProssSeverl.java:43)
  37. at unit.ProssSeverl.service(ProssSeverl.java:36)
  38. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  39. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  40. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  41. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  42. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  43. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  44. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  45. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
  46. at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
  47. at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
  48. at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  49. at java.lang.Thread.run(Unknown Source)
  50. 原来:
  51. String sql = "select * from user_table where Id='?' ";
  52. ?不可以加单引号 改为
  53. String sql = "select * from user_table where Id=? ";

发表评论

表情:
评论列表 (有 0 条评论,113人围观)

还没有评论,来说两句吧...

相关阅读