使用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)

使用jdbc连接mysql为啥报错?

使用JDBC 连接 hive 报错 Invalid status 72

jdbc使用call调用存储过程报错