gpt4 book ai didi

java - PreparedStatement 方法中的 ArrayOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-02 04:53:51 29 4
gpt4 key购买 nike

我创建了一个在 Java 中执行值数组的方法。每当我尝试运行它时,都会遇到 ArrayOutOfBoundsException。我的控制台将错误指向是“if”语句。

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

我之前的连接或PreparedStatement没有问题。我最终只遇到了此方法的问题,因为数组(Object[])无法正常工作。我使用这种方法从“用户”表中插入和删除不同的数据。我在这里采用 4 个参数,第一个是 ID(自动生成并作为主键。第二个参数是我的用户的名称,第三个是用户的 UUID,最后一个是用户的排名(有点访问级别)。我期待第一个(ID)在每次插入时自动生成后就不再计算在内。所以我们不要计算它。以下是我如何使用该方法的示例:

executeQuery("INSERT INTO `user` (`name`, `uuid`, `rank`) VALUES (?, ?, ?)", new Object[]{"'username'", "'myUUID'", 64});

因此,在执行此方法后,我最终收到一个错误,告诉我:

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) ~[?:?]

如果你们在理解我的解释时遇到问题,请向我询问更好的解释。

最佳答案

数组的索引是从零开始的,而PreparedStament的索引是从一开始的,因此您在差一问题上失败了:

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

关于java - PreparedStatement 方法中的 ArrayOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967650/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com