带有预处理语句的Java MySQL称参数索引超出范围

时间:2016-10-26 07:40:17

标签: java mysql intellij-idea

我之前看过这里,但没有一个答案帮助我! 我有以下代码:

 google.charts.load('current', {packages:['corechart'],'language': 'de'});

在我的数据库方案中,有2列,第一列是整数(id),第二列是VARCHAR(45)(串行)。但我仍然收到以下错误:

  

java.sql.SQLException:参数索引超出范围(2>参数个数,为0)。

     

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)   在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)   在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)   在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)   在com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3321)   在com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3306)   在com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4021)   在DataBase.SerialDataBase.addSerialToDb(SerialDataBase.java:41)

我在另一个程序中使用了这个方法,但是由于切换到IntelliJ,它停止了工作。

提前致谢!

修改 我忘了提,我正在使用Java 1.8,mySql连接器5.1.40并运行MySql 5.7.15

2 个答案:

答案 0 :(得分:1)

根据你的评论 getMaxInt()方法,问题是因为prepare语句对象。它已在 getMaxInt()方法中更新,并且参数不匹配错误发生。我认为它的程序逻辑错误,你只需要改变这个程序逻辑。如果不需要,我还建议不要连接字符串。

下面就可以了。

 pst = con.prepareStatement("INSERT INTO blogdata.serials (column1,column2) VALUES (?,?)";

答案 1 :(得分:0)

尝试使用如下的insert语句:

"INSERT INTO blogdata.serials (column1,column2) VALUES (?,?)";