Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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 PreparedStatement方法中BoundsException的数组_Java_Sql_Arrays_Jdbc_Prepared Statement - Fatal编程技术网

Java PreparedStatement方法中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

我在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 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]);
    }
}