Java 只有第一个ArrayList起作用
所以我创建了两个相同的方法,它们返回椅子ID和预订日期:Java 只有第一个ArrayList起作用,java,mysql,arraylist,Java,Mysql,Arraylist,所以我创建了两个相同的方法,它们返回椅子ID和预订日期: public ArrayList<String> GetChair(String Class) throws SQLException{ ArrayList<String> arr = new ArrayList<String>(20); openconnection(); String querychair = "SELECT * FROM hema.flight_
public ArrayList<String> GetChair(String Class) throws SQLException{
ArrayList<String> arr = new ArrayList<String>(20);
openconnection();
String querychair = "SELECT * FROM hema.flight_usa WHERE free = 1 and class='"+Class+"'";
Statement stm=(Statement) con.createStatement();
ResultSet rs;
rs = stm.executeQuery(querychair);
while(rs.next())
{
arr.add(rs.getString("chair_id"));
}
return arr;
}
//---------------- The Second One ----------------------------------------
public ArrayList<String> GetDate(String Class) throws SQLException{
ArrayList<String> arr2 = new ArrayList<String>(20);
openconnection();
String querydate = "SELECT * FROM hema.flight_usa WHERE free = 1 and class='"+Class+"'";
Statement stm=(Statement) con.createStatement();
ResultSet rst;
rst = stm.executeQuery(querydate);
while(rst.next())
{
arr2.add(rst.getString("res_date"));
}
return arr2;
}
然后我调用这两个方法从表中获取数据
问题是我只得到第一个调用的方法:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
String Class=Class1Text.getText();
Model model =new Model();
ArrayList<String> arr1=new ArrayList<String>(20);
arr1=model.GetDate(Class);
jTextField12.setText(arr1.get(0));
jTextField13.setText(arr1.get(1));
jTextField14.setText(arr1.get(2));
jTextField15.setText(arr1.get(3));
jTextField16.setText(arr1.get(4));
jTextField17.setText(arr1.get(5));
jTextField18.setText(arr1.get(6));
jTextField19.setText(arr1.get(7));
jTextField20.setText(arr1.get(8));
jTextField21.setText(arr1.get(9));
ArrayList<String> arr=new ArrayList<String>(20);
arr = model.GetChair(Class);
jTextField2.setText(arr.get(0));
jTextField3.setText(arr.get(1));
jTextField4.setText(arr.get(2));
jTextField5.setText(arr.get(3));
jTextField6.setText(arr.get(4));
jTextField7.setText(arr.get(5));
jTextField8.setText(arr.get(6));
jTextField9.setText(arr.get(7));
jTextField10.setText(arr.get(8));
jTextField11.setText(arr.get(9));
} catch (SQLException ex) {
Logger.getLogger(Reservation.class.getName()).log(Level.SEVERE, null, ex);
}
}
这样只需执行GetDate方法
它一直给我这个错误:
线程AWT-EventQueue-0 java.lang.IndexOutOfBoundsException中出现异常:索引:3,大小:3
位于java.util.ArrayList.rangeCheckArrayList.java:638
位于java.util.ArrayList.getArrayList.java:414
在View.Reservation.jButton1ActionPerformedReservation.java:293
at View.Reservation.access$000Reservation.java:16
at View.Reservation$1.actionPerformedReservation.java:84
位于javax.swing.AbstractButton.fireActionPerformedAbstractButton.java:2022
位于javax.swing.AbstractButton$Handler.actionPerformedAbstractButton.java:2346
位于javax.swing.DefaultButtonModel.fireActionPerformedDefaultButtonModel.java:402
在javax.swing.DefaultButtonModel.setPressedDefaultButtonModel.java:259
java:252
位于java.awt.Component.processMouseEventComponent.java:6527
javax.swing.JComponent.processMouseEventJComponent.java:3321
位于java.awt.Component.processEventComponent.java:6292
位于java.awt.Container.processEventContainer.java:2234
位于java.awt.Component.dispatchEventImplComponent.java:4883
位于java.awt.Container.dispatchEventImplContainer.java:2292
位于java.awt.Component.dispatchEventComponent.java:4705
位于java.awt.LightweightDispatcher.retargetMouseEventContainer.java:4898
位于java.awt.LightweightDispatcher.processMouseEventContainer.java:4533
位于java.awt.LightweightDispatcher.dispatchEventContainer.java:4462
位于java.awt.Container.dispatchEventImplContainer.java:2278
在java.awt.Window.dispatchEventImplWindow.java:2739
位于java.awt.Component.dispatchEventComponent.java:4705
在java.awt.EventQueue.dispatchEventImplEventQueue.java:746
在java.awt.EventQueue.access$400EventQueue.java:97
在java.awt.EventQueue$3.runEventQueue.java:697
位于java.awt.EventQueue$3.runEventQueue.java:691
位于java.security.AccessController.doPrivilegeEdNative方法
java.security.ProtectionDomain$1.doIntersectionPrivilegeProtectionDomain.java:75
java.security.ProtectionDomain$1.doIntersectionPrivilegeProtectionDomain.java:86
在java.awt.EventQueue$4.runEventQueue.java:719
在java.awt.EventQueue$4.runEventQueue.java:717
位于java.security.AccessController.doPrivilegeEdNative方法
java.security.ProtectionDomain$1.doIntersectionPrivilegeProtectionDomain.java:75
在java.awt.EventQueue.dispatchEventQueue.java:716
位于java.awt.EventDispatchThread.pumpOneEventForFiltersEventDispatchThread.java:201
在java.awt.EventDispatchThread.pumpEventsForFilterEventDispatchThread.java:116
在java.awt.EventDispatchThread.pumpEventsForHierarchyEventDispatchThread.java:105
在java.awt.EventDispatchThread.pumpEventsEventDispatchThread.java:101
在java.awt.EventDispatchThread.pumpEventsEventDispatchThread.java:93
在java.awt.EventDispatchThread.runEventDispatchThread.java:82时抛出IndexOutOfBoundsException以指示索引超出范围。在第二个结果集中,您调用了10个结果,结果中可能只有3行。在获取详细信息之前检查列表的大小
if(arr1.size()>9){
jTextField12.setText(arr1.get(0));
jTextField13.setText(arr1.get(1));
jTextField14.setText(arr1.get(2));
jTextField15.setText(arr1.get(3));
jTextField16.setText(arr1.get(4));
jTextField17.setText(arr1.get(5));
jTextField18.setText(arr1.get(6));
jTextField19.setText(arr1.get(7));
jTextField20.setText(arr1.get(8));
jTextField21.setText(arr1.get(9));
}
表中所选类可能只有3行。那么?那么问题是什么?问题是异常消息所说的。问题也出在异常堆栈跟踪显示的位置,但您选择对我们隐藏此信息。当然不是。。。我只是不知道它会有帮助:/I我已经编辑了它。问题在Reservation.java的第293行,在jButton1ActionPerformed方法中。你看,你需要的所有信息都在堆栈跟踪中。