2011-03-21 3 views
0

ms 액세스 db에서 jtable로 날짜 유형을 표시하는 데 문제가 있습니다 ... 작동하지 않을 것 같아요. 코드를 수정하려고했지만 여전히 운이 좋지는 않았습니다. , 내가 여기 안녕하세요, jTable에 도움이 필요합니다.

데이터베이스에서 데이터를 내 JTable의를 채우기 위해 내 샘플 코드입니다 ... 여기 누군가가 나에게 또 다른 아이디어를 제공 할 수있는 희망 :

public void PopulatejTable(){ 
    DefaultTableModel model =(DefaultTableModel)jTable1.getModel(); 

    jTable1.getColumnModel().getColumn(0).setPreferredWidth(35); 
    jTable1.getColumnModel().getColumn(1).setPreferredWidth(200); 
    jTable1.getColumnModel().getColumn(2).setPreferredWidth(100); 
    jTable1.getColumnModel().getColumn(3).setPreferredWidth(150); 
    jTable1.getColumnModel().getColumn(4).setPreferredWidth(100); 

    String dbuser = ""; 
    String dbpasswd = ""; 
    String DriverPrefix = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\myWork2\\PersonalInfo\\db1.mdb"; 

    String SQLString = ("select ID,Username,Password,Website from Table1 order by ID"); 

    try{ 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    }catch(Exception e){ 
     JOptionPane.showMessageDialog(null,""+e.getMessage(),"JDBC DRIVER Error",JOptionPane.WARNING_MESSAGE); 
     return; 
    } 
    PreparedStatement stmt = null; 
    Connection con = null; 
    ResultSet rset = null; 

    try{ 
     con = DriverManager.getConnection(DriverPrefix,dbuser,dbpasswd); 
     stmt = con.prepareStatement(SQLString); 
    }catch(Exception e){ 
     JOptionPane.showMessageDialog(null,""+e.getMessage(),"Connection Error",JOptionPane.WARNING_MESSAGE); 
    } 
    while(model.getRowCount()>0){ 
     model.removeRow(0); 
    } 

    try{ 
     rset = stmt.executeQuery(); 
     while(rset.next()){ 
      int ID = rset.getInt(1); 
      String Username = rset.getString(2); 
      String Password = rset.getString(3); 
      String Website = rset.getString(4); 
      Date DateEncoded = rset.getDate(5); 
      model.addRow(new Object[]{ID,Username,Password,Website,DateEncoded}); 
     } 
     rset.close(); 
     stmt.close(); 
     con.close(); 
    }catch(SQLException e){ 
      JOptionPane.showMessageDialog(null,e.getMessage(),"Communication Error",JOptionPane.WARNING_MESSAGE); 
    } 
} 

을하고이 오류가 난 얻을 수 있습니다 :

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 4 >= 4 
    at java.util.Vector.elementAt(Vector.java:427) 
    at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277) 
    at UsernamePasswordPackage.MainForm.PopulatejTable(MainForm.java:1302) 
    at UsernamePasswordPackage.MainForm.<init>(MainForm.java:71) 
    at UsernamePasswordPackage.MainForm$29.run(MainForm.java:1398) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

나를 도울 수있는 사람 덕분에 ... :) :) :)

+0

오류가 있습니까? 그렇다면 여기에 게시하십시오 .. –

+0

잘 모르시겠습니까? 위 코드 조각에 줄 번호 1302가 있습니까? "UsernamePasswordPackage.MainForm.PopulatejTable (MainForm.java:1302)"에서 예외가 발생 했으므로 확인하십시오. –

+0

[Microsoft] [ODBC Microsoft Access Drivers]라는 잘못된 오류가 발생했습니다. 설명자 인덱스가 잘못되었습니다. 감사합니다. 너희들, 내 프로젝트에 많은 도움을 주었다. 많은 많은 감사 :) :) –

답변

1

단지 오류 코드를보고 충분한 열이없는 것처럼 보입니다.

jTable1.getColumnModel().getColumn(4).setPreferredWidth(100); 


Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 4 >= 4 at java.util.Vector.elementAt(Vector.java:427) at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277) 
+0

선생님, 고맙습니다. 내 날짜 유형에 새 열을 추가했습니다. 하지만 그것은 나에게 [Microsoft] [ODBC Microsoft Access Drivers]가 잘못된 설명자 색인이라는 또 다른 오류를줍니다. 날짜 형식의 형식에 대해 내 열을 형식화해야합니까? 다시 감사드립니다. –

+0

Microsoft Access에서 일한 적이 확실하지 않습니다. 내 추천은 Google입니다. – Nicholas