Java PreparedStatement方法中BoundsException的数组
我在Java中创建了一个执行值数组的方法。每当我尝试运行它时,我都会得到一系列BoundsException。我的控制台将错误指向 是“如果”的陈述Java PreparedStatement方法中BoundsException的数组,java,sql,arrays,jdbc,prepared-statement,Java,Sql,Arrays,Jdbc,Prepared Statement,我在Java中创建了一个执行值数组的方法。每当我尝试运行它时,我都会得到一系列BoundsException。我的控制台将错误指向 是“如果”的陈述 for (int i = 1; i <= array.length; i++) { if (array[i] instanceof String) { ps.setString(i, (String) array[i]); } else if (array[i] instanceof I
for (int i = 1; i <= array.length; i++) {
if (array[i] instanceof String) {
ps.setString(i, (String) array[i]);
} else if (array[i] instanceof Integer) {
ps.setInt(i, (int) array[i]);
}
}
所以在我执行了这个方法之后,我最终得到了一个错误,告诉我:
java.lang.ArrayIndexOutOfBoundsException: 3
at com.java.tarjeihs.plugin.mysql.MySQLAccessor.executeQuery(MySQLAccessor.java:107) ~[?:?]
at com.java.tarjeihs.plugin.user.UserHandler.test(UserHandler.java:24) ~[?:?]
如果你们在理解我的解释时遇到问题,请向我寻求更好的解释。数组的索引是以零为基础的,而
preparedstatement
的索引是以一为基础的,因此您在一个问题上失败了:
for (int i = 0; i < array.length; i++) {
if (array[i] instanceof String) {
ps.setString(i + 1, (String) array[i]);
} else if (array[i] instanceof Integer) {
ps.setInt(i + 1, (int) array[i]);
}
}
for(int i=0;i
int i=1的可能重复项;i ArrayoutofBoundsCeptionArrays是从0到长度-1,而不是从1到长度。
for (int i = 0; i < array.length; i++) {
if (array[i] instanceof String) {
ps.setString(i + 1, (String) array[i]);
} else if (array[i] instanceof Integer) {
ps.setInt(i + 1, (int) array[i]);
}
}