2016-05-11 5 views
0

Ich versuche JTable mit Daten aus der SQLite-Datenbank-Tabelle durch diesen Code ..Daten aus sqliite Datenbank geholt gibt mehrere Instanz einzelner Zeilen JTable

Klasse UserRecords geholt zu bevölkern erstreckt JPanel {

private static final long serialVersionUID = 6596285522176538665L; 

String record_holderName=null; 
public UserRecords(){} 

public UserRecords(String name) { 
    this.record_holderName=name; 

    Connection con = null; 
    PreparedStatement st=null; 
    ResultSet rs=null; 
    JTable myTable = new JTable(); 


    try { 
     con = ConnectDb.getDbConnection(); 
     st=con.prepareStatement("select email,password,servicename,accounttype,hint,lastupdtime from usergems where record_holder=?"); 
     st.setString(1,record_holderName); 
     rs = st.executeQuery(); 
     ResultSetMetaData md= rs.getMetaData(); 
     int columns=md.getColumnCount(); //holds number of column in resultSet 

     DefaultTableModel model= new DefaultTableModel(); //this object pass data into JTables 

     Vector<Object>columns_name=new Vector<Object>(); 
     Vector<Object>data_rows=new Vector<Object>(); 

     for(int i=1;i<columns;i++) 
     { 
      columns_name.addElement(md.getColumnName(i)); 
     } 
     model.setColumnIdentifiers(columns_name); 

     while(rs.next()) 
     { 
      for(int j=1;j<columns;j++) 
      { 
       data_rows.addElement(rs.getString(j)); 
      } 
      model.addRow(data_rows); 
     } 

     myTable.setModel(model); 

      } catch(Exception e){ 
     String msg = "ClassNotFoundException: Not able to load the db drivers\n Details: \n" + e; 
     JOptionPane.showMessageDialog(this, msg, "Error!", JOptionPane.ERROR_MESSAGE); 
     System.exit(0); 
    }finally{ 
     try{ 
      rs.close(); 
      st.close(); 
      con.close(); 
     }catch(Exception e){ 
      JOptionPane.showConfirmDialog(null, e); 
     } 
     } 

    add(myTable); 
    myTable.setPreferredScrollableViewportSize(new Dimension(800,500)); 
    JScrollPane pane =new JScrollPane(myTable); 
    add(pane,BorderLayout.CENTER);/*myTable.getRowHeight()* myTable.getRowCount())*/ 
    //myTable.repaint(); 

} 

}

Dies ausgeführt fein, aber gibt nur eine Zeile aus der Datenbank, mehrere Zeit (das gleiche wie die Anzahl der Zeilen in der Datenbank) Hier ist der Screenshot der Ergebnis-und Datenbanktabelle. Databaseresult(data fetched)

bitte helfen ..

Antwort

1

gibt aber nur eine Zeile aus der Datenbank, mehrere Zeit

Da Sie nur eine einzige Zeile Vektor haben.

Sie benötigen einen neuen Vektor für jede Reihe von Daten:

while(rs.next()) 
    { 
     Vector<Object> row = new Vector<Object>(); 

     for(int j=1;j<columns;j++) 
     { 
      rows.addElement(rs.getString(j)); 
     } 

     model.addRow(row); 
    } 
+0

Oh! Danke für die Hilfe @camickr .. – Emrit