我正在尝试将值设置为类类型的列表。这些值正在从数据库(MYSQL)中获取。这些值正在正确获取,但在设置列表时可能会发生一些错误。
public List<DataFetch> fetchdata(){
List<DataFetch> ob=new ArrayList<DataFetch>();
ResultSet rs = null;
PreparedStatement pst = null;
Connection con = getConnection();
String stm = "Select * from client";
try {
pst = con.prepareStatement(stm);
pst.execute();
rs = pst.getResultSet();
int i=0;
while(rs.next()){
String clientname=rs.getString(1);
String clientid=rs.getString(2);
ob.set(i,new DataFetch(clientname,clientid));
i++;
/* ob.setClientname(clientname);
ob.setClientid(clientid);*/
}
// return ob;
} catch (SQLException e) {
e.printStackTrace();
}
return (List<DataFetch>)ob;
}
我试图在控制台上打印这些值,但遇到以下问题:
Sep 05, 2015 11:20:24 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/DataTab] threw exception [Index: 0, Size: 0] with root cause
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.set(ArrayList.java:426)
at UserData.fetchdata(UserData.java:49)
at UserData.execData(UserData.java:29)
请给出适当的解决方案。提前致谢。
最佳答案
抛出异常是因为您尝试在空列表中设置元素。为了消除错误,您必须替换此行(#49):
`ob.set(i,new DataFetch(clientname,clientid));`
通过这个:
`ob.add(new DataFetch(clientname,clientid));`
没有i
索引,只需将元素添加到列表中。
关于java.lang.IndexOutOfBoundsException : Index: 0, 大小 : 0 at java. util.ArrayList.rangeCheck,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32416443/