使用JDBC报错“Parameter index out of range (2 > number of parameters, which is 1).“
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JDBC报错“Parameter index out of range (2 > number of parameters, which is 1).“相关的知识,希望对你有一定的参考价值。
异常
在使用JDBC的PreparedStatement的时候报错:
Exception in thread "main" java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:862)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3319)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3304)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3341)
at com.mysql.jdbc.PreparedStatement.setLong(PreparedStatement.java:3358)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3529)
at com.mysql.jdbc.JDBC42PreparedStatement.setObject(JDBC42PreparedStatement.java:68)
at com.demo.bean.dao.BaseMapper.updateById(BaseMapper.java:289)
at com.demo.bean.dao.Test.main(BaseMapper.java:143)
原因
根据堆栈跟踪信息提示:在SQL语句中找到了1个问号,即"which is 1"提示的信息;但却插入了2个值,即"2 > number of parameters"提示的信息,所以有问题。
也就是说发生错误的原因是当设置参数时,没有相应的问号与之匹配,然后导致参数越界。
查看SQL语句,确实只有一个问号,所以要传入正确的SQL语句。
解决
传入正确的SQL语句,即添加对应参数个数的问号。
以上是关于使用JDBC报错“Parameter index out of range (2 > number of parameters, which is 1).“的主要内容,如果未能解决你的问题,请参考以下文章
IDEA_MyBatis_SQLException:Parameter index out of range坑
DataTables 警告:表 id=id - 请求行 row-index、列 column-index 的未知参数“parameter”
MySQL - java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0)