今天作项目的时候遇到一个问题,而后苦思冥想不得结果,报错却debug了好久不知为什么而错。如今刚刚解决,记录在博客里吧,你们分享。java
String sql = "select product_id,newprice,unit,img from goods where keyword like '%?%'";mysql
我写了这么一条sql语句,而后习惯性的使用PreparedStatement的setString方法把参数设置进去,可是却报错,说参数没有被设置进去。sql
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2556)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3381)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:2786)spa
。。。debug
经过验证,不是个人语句问题,也不是设置的问题,是本来模糊查询就不能这么设置。博客
模糊查询设置的时候只能将%放在setString中设置ps.setString(1,"%"+param+"%");it
而sql语句也要注意改成select * product_id,unit,img from goods where keyword like ?;注意:没有''io