【发布时间】:2015-03-10 15:27:04
【问题描述】:
我创建了一个在 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]);
}
}
我对之前的 Connection 或 PreparedStatement 没有任何问题。由于数组(Object [])无法正常工作,我最终只会遇到此方法的问题。我使用这种方法从“用户”表中插入和删除不同的数据。我在这里有4个参数,第一个是ID(它是auto_generated并作为主键。第二个参数是我的用户名,第三个是用户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) ~[?:?]
如果你们理解我的解释有问题,请向我寻求更好的解释。
【问题讨论】:
-
int i = 1; i : array[array.length] --> ArrayOutOfBoundsException
-
数组是从 0 到 length - 1,而不是从 1 到 length。
标签: java sql arrays jdbc prepared-statement