JDBC PreparedStatement Like参数报错解决方案
由于我们的项目不大,所以刚开始决定时我为了省事想用SSH,可是后来觉得只有Struts2好了,后来的查询等数据库操作我自己写方法不行了嘛!
刚才写一个公共查询的方法,在增加参数时出了点错误,就是使用模糊查询时犯晕了。
我写的方法如下:
/** *@说明执行一条查询SQL语句,可以带参数 */ publicstaticList
后来我输入这样的一个参数进行查询:
publicstaticvoidmain(String[]args){ Object[]para=newObject[]{"c"}; Listlist=excuteQuery("select*froms_usertwheret.userNamelike'%?%'",para); for(Object[]o:list){ for(Objectob:o){ System.out.print(ob+"-"); } System.out.println(); } }
结果报错如下:
java.sql.SQLException:Parameterindexoutofrange(1>numberofparameters,whichis0). atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056) atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) atcom.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3279) atcom.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3263) atcom.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4087) atcom.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3513) atorg.apache.commons.dbcp.DelegatingPreparedStatement.setObject(DelegatingPreparedStatement.java:166) atcom.nms.common.db.ConnectionManager.excuteQuery(ConnectionManager.java:86) atcom.nms.common.db.ConnectionManager.main(ConnectionManager.java:20) Exceptioninthread"main"java.lang.NullPointerException atcom.nms.common.db.ConnectionManager.main(ConnectionManager.java:21)
后来才知道,模糊查询时要这样写:
publicstaticvoidmain(String[]args){ Object[]para=newObject[]{"%c%"}; Listlist=excuteQuery("select*froms_usertwheret.userNamelike?",para); for(Object[]o:list){ for(Objectob:o){ System.out.print(ob+"-"); } System.out.println(); } }
就这么简单,闲话不说了!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。