我创建了一个在Java中执行值数组的方法。每当我尝试运行它时,我最终会得到一个ArrayOutOfBoundsException。我的控制台将错误指向 作为"如果"言。
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]);
}
}
我之前的Connection或PreparedStatement没问题。我最终只是遇到了这个方法的问题,因为数组(Object [])无法正常工作。我使用这种方法从&#34; user&#34;中插入和删除不同的数据。表。我在这里取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) ~[?:?]
如果你们在理解我的解释时遇到问题,请向我询问更好的解释。
答案 0 :(得分:2)
数组的索引是零基础的,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]);
}
}