从数据库中获取信息并将其写入JTable。错误:java。lang.IndexOutOfBoundsException:索引:2,大小:2
我试图从数据库中创建一个“用户”列表,并将其添加到我的JTable中
我收到了错误信息:
"java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Administration.User_Verwalten.show_user(User_Verwalten.java:83)
at Administration.User_Verwalten.<init>(User_Verwalten.java:189)
at Administration.User_Verwalten$1.run(User_Verwalten.java:62)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)"
我已经查看了ArrayList,但没有发现任何错误。我已经读过一篇关于这个错误消息的帖子,其中错误在for循环中,但这里for循环是正确的。 以下是代码:
ArrayList <User> list = connect.getAllFromUserAsUser();
DefaultTableModel model1 = (DefaultTableModel) tableUsers.getModel();
Object [] row = new Object[7];
for (int i=0; i<=list.size();i++) {
row [0] = list.get(i).getID();
row [1] = list.get(i).getBenutzername();
row [2] = list.get(i).getPasswort();
row [3] = list.get(i).getName();
row [4] = list.get(i).getVorname();
row [5] = list.get(i).getGeburtsdatum();
row [6] = list.get(i).isIstWirt();
model1.addRow(row);
}
public ArrayList<User> getAllFromUserAsUser() throws SQLException { //prüft ob eingegebene LoginID in DB ist
ArrayList <User> All = new ArrayList <User>();
try {
String query = "select ID,Benutzername,Passwort,Name,Vorname,Geburtsdatum,IstWirt from user";
rs= st.executeQuery(query);
User user;
while (rs.next()) {
user= new User(rs.getInt("ID"), rs.getString("Benutzername"), rs.getString("Passwort"),rs.getString("Name"),
rs.getString("Vorname"),rs.getDate("Geburtsdatum"),rs.getBoolean("IstWirt"));
All.add(user);
}
}
catch(Exception e) {
System.out.println(e);
}
finally {
if (rs!=null) {rs.close();
}
}
return All;
}
# 1 楼答案
我认为问题在于for循环条件
i<=list.size();i++)
如果数组大小为4,那么最多需要4次迭代,例如i=0,1,2,3。这是4次迭代,所以停止条件是数组的大小-1。 for循环应该是for(int i=0; i<list.size();i++) {