我从数据库中取出记录(多行多列,其中第一列是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();
}
}
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();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货