Java 只有第一个ArrayList起作用

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_

所以我创建了两个相同的方法,它们返回椅子ID和预订日期:

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方法中。你看,你需要的所有信息都在堆栈跟踪中。