[英]Java JList remove() method throws an ArrayOutOfBoundsException
[英]ArrayOutOfBoundsException in PreparedStatement method
我制作了一種用於在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沒有問題。 由於array(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]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.