我从数据库中取出记录(多行多列,其中第一列是String型,第二列Date型,其他都是BigDecimal)存在Resultset对象rs里,并构造一个Vector,用while(rs.next())循环将结果集中的每行记录中每个字段的数据,存储在向量中。然后再将向量插入JTable中显示。可是运行时,出现异常
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:431)
at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:618)
at javax.swing.JTable.getValueAt(JTable.java:1771)
at javax.swing.JTable.prepareRenderer(JTable.java:3724)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1149)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:105)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:974)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
at javax.swing.JComponent.paintComponent(JComponent.java:541)
at javax.swing.JComponent.paint(JComponent.java:808)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JViewport.paint(JViewport.java:722)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4787)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
at javax.swing.JComponent._paintImmediately(JComponent.java:4685)
at javax.swing.JComponent.paintImmediately(JComponent.java:4488)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
找了很久都没有发现问题出在哪里?请大虾指教程序如下:
public void jButtonDay_actionPerformed(ActionEvent e) {
    final String tablename = "T_AC_AUDIT";
    String prefix = "select * from " + tablename + " where to_char(auditdate, 'yyyymmdd') = ";
    String year = this.jComboBoxYear1.getSelectedItem().toString();
    String month = this.jComboBoxMonth1.getSelectedItem().toString();
    String day = this.jComboBoxDay1.getSelectedItem().toString();
    month = Integer.parseInt(month) > 10 ? month : "0" + month;
    day = Integer.parseInt(day) > 10 ? day : "0" + day;
    String sql = prefix + "'" + year + month + day + "'";
    try {
      Connection conn = DataBaseConnection.getConnection();
      Statement stmt = conn.createStatement();
      ResultSet rs = stmt.executeQuery(sql);
      while (rs.next()) {
        Vector vt = new Vector();
        vt.addElement(rs.getString(1));
        vt.addElement(rs.getDate(2));
        vt.addElement(rs.getBigDecimal(3));
        vt.addElement(rs.getBigDecimal(4));
        vt.addElement(rs.getBigDecimal(5));
        vt.addElement(rs.getBigDecimal(6));
        vt.addElement(rs.getBigDecimal(7));
        vt.addElement(rs.getBigDecimal(8));
        vt.addElement(rs.getBigDecimal(9));
        vt.addElement(rs.getBigDecimal(10));
        modelDay.addRow(vt);
        vt.removeAllElements();
      }
      rs.close();
      stmt.close();
      conn.close();
    }
    catch (SQLException ex){
      ex.printStackTrace();
    }
  }