Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jdbc错误参数索引超出范围(2>;个参数,即1)_Java_Jdbc - Fatal编程技术网

Java jdbc错误参数索引超出范围(2>;个参数,即1)

Java jdbc错误参数索引超出范围(2>;个参数,即1),java,jdbc,Java,Jdbc,我编写了以下java方法,当我调用它时,给出了错误 Parameter index out of range (2 > number of parameters, which is 1). 它在preparedStatement.setInt(2,p)行给出错误 for(int t=0;t您正在为两个不同的SQL语句使用相同的prepared语句。并且没有任何参数是不同的。这就是为什么会出现此错误 试着跟随 如果(allocationProb==0){ p=1; preparedStat

我编写了以下java方法,当我调用它时,给出了错误

Parameter index out of range (2 > number of parameters, which is 1).
它在preparedStatement.setInt(2,p)行给出错误


for(int t=0;t您正在为两个不同的SQL语句使用相同的prepared语句。并且没有任何参数是不同的。这就是为什么会出现此错误

试着跟随

如果(allocationProb==0){ p=1; preparedStatement=dbConnection.prepareStatement(sql)


希望对您有所帮助

您对两个不同的SQL语句使用相同的预处理语句。并且没有任何参数是不同的。这就是为什么您会出现此错误

试着跟随

如果(allocationProb==0){ p=1; preparedStatement=dbConnection.prepareStatement(sql)


尽管您更改了
sql
变量,希望它对您有所帮助

sql="UPDATE `trial`.`teacherallocation` SET `AllocationSub1`=?,` allocationProb`=? WHERE `TeacherID`=?;";
您不会使用它创建新的
PreparedStatement
。因此,当您调用

preparedStatement.setString(1,str1);
preparedStatement.setInt(2,p);
preparedStatement.setString(3,var1[t]);
preparedStatement.executeUpdate();
您在SQL上调用它

sql="SELECT allocationProb FROM trial.teacherallocation where TeacherID=?;";
它只有一个参数,如果您尝试添加更多参数,将引发异常

您需要在这些行之前创建一个新的或重新分配一个
PreparedStatement
对象

sql="UPDATE `trial`.`teacherallocation` SET `AllocationSub1`=?,` allocationProb`=? WHERE `TeacherID`=?;";
preparedStatement = dbConnection.prepareStatement(sql);
preparedStatement.setString(1,str1);
preparedStatement.setInt(2,p);
preparedStatement.setString(3,var1[t]);
preparedStatement.executeUpdate();
此外,在使用完所有jdbc连接后,还应该关闭它们


preparedStatement.close();

尽管您更改了
sql
变量

sql="UPDATE `trial`.`teacherallocation` SET `AllocationSub1`=?,` allocationProb`=? WHERE `TeacherID`=?;";
您不会使用它创建新的
PreparedStatement
。因此,当您调用

preparedStatement.setString(1,str1);
preparedStatement.setInt(2,p);
preparedStatement.setString(3,var1[t]);
preparedStatement.executeUpdate();
您在SQL上调用它

sql="SELECT allocationProb FROM trial.teacherallocation where TeacherID=?;";
它只有一个参数,如果您尝试添加更多参数,将引发异常

您需要在这些行之前创建一个新的或重新分配一个
PreparedStatement
对象

sql="UPDATE `trial`.`teacherallocation` SET `AllocationSub1`=?,` allocationProb`=? WHERE `TeacherID`=?;";
preparedStatement = dbConnection.prepareStatement(sql);
preparedStatement.setString(1,str1);
preparedStatement.setInt(2,p);
preparedStatement.setString(3,var1[t]);
preparedStatement.executeUpdate();
此外,在使用完所有jdbc连接后,还应该关闭它们


preparedStatement.close();

您正在使用的准备好的语句用于SQL
SQL=“SELECT allocationProb FROM trial.teacherallocation where TeacherID=?;”;
它只有一个参数。您正在使用的准备好的语句用于SQL
SQL=“SELECT allocationProb FROM trial.teacherallocation where TeacherID=?;”;
只有一个参数。如果其中任何一个答案有帮助,您可以向上投票和/或接受其中一个。@user2094670:如果您认为索蒂里奥斯的答案有帮助,我建议您接受并向上投票。如果任何一个答案有帮助,您可以向上投票和/或接受其中一个。@user2094670:如果您认为索蒂里奥斯的答案有帮助,我建议您向上投票你应该接受并投票表决。