# Java Acces Dasten in einer Gui Komponente anzeigen



## Seaman (29. Sep 2005)

Hallo ich habe es geschaft die Verbindung mit der Datenbank und Java herzustellen.
In der Konsole zeigt er auch die Daten an bloß wie bekomme ich die Daten in eine Graphische Oberfläche?

Danke für eure Hilfe.


----------



## AlArenal (29. Sep 2005)

Geht die Frage noch etwa allgemeiner? 

Überleg dir was der Benutzer mit den Daten machen soll und mit welcher Komponente du sie am zweckdienlichen darstellen kannst und schieb sie halt rein


----------



## Seaman (29. Sep 2005)

Hallo sorry dass ich so allgemein gefragt habe  
Ich bräuchte einen Beispiel Code wie ich diese daten z.b in einer JTable anzeigen kann.


----------



## copper (29. Sep 2005)

Du bastelst dir für deine Jtable ein eigens model welches du mit den daten der DB füllst.
Das model könnte so aussehen.

```
class Model extends AbstractTableModel{
     private Class[] classes;
     private db datenbank = new db();
     private int spalte= datenbank.getfeldanzahl();
     private int zeile= datenbank.getzeihlenzahl();
     private String[] spaltentitel = new String[spalte-1];
     private Object[][] tabinhalt = new Object [zeile][spalte-1];
     
    public Model(){ 
     classes = new Class[spalte]; 
     for(int z = 0;z<spalte;++z)
     {
      classes[z] = String.class;
     }
     for(int j = 0;j<zeile;++j)
     {
      for(int i = 0;i<spalte;++i)
      {
         tabinhalt[j][i] = datenbank.getInhalt(i+1,j+1); 
      }
      tabinhalt[j][spalte] = false;
     }
    }
    
   public boolean isCellEditable(int rowIndex, int columnIndex)
    {
     return rowIndex < zeile&& columnIndex <= spalte-1;
    }
    
    public void setValueAt(Object aValue, int rowIndex, int columnIndex)
   {
     Object value = (Object)aValue;
     tabinhalt[rowIndex][columnIndex] = value;
     fireTableDataChanged();
    
   }
    public int getColumnCount(){
         return spalte-1;
     }
    
    public int getRowCount(){
        return zeile;
    }
    
    public String getColumnName(int column){
       for(int i=0; i<= spalte-1; ++i)
     {
         
       spaltentitel[i] =  datenbank.getSpaltenName(i+1);
       
     } 
         return spaltentitel[column];
    }
    
    public Object getValueAt(int rowindex, int columnindex){
        return tabinhalt[rowindex][columnindex];
    }
    
    public Class getColumnClass(int columnindex){
     return classes[columnindex];   
    }
}
```

Wie die siehst gibt es ein Array tabinhalt. Dieses wird mit den Datne der DB befüllt. 
Die -1 muss sein da das array von 0 zählt und zumindest mysql von 1 beginnt. Wie das bei acess ist weis ich net.

Hier die Datenbank abfragen:

```
import java.sql.*;
 
class db2 {
    private ResultSet rs;
    private ResultSetMetaData meta;
    private int reihenanzahl;
    private int feldanzahl;
    private String inhalt;
    private Statement stmt;
    private String query = "SELECT * FROM data";
    db2() {       
        try
        {
            
            Class.forName ("com.mysql.jdbc.Driver").newInstance();
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost/meta?user=root");
            stmt = con.createStatement();            
            rs = stmt.executeQuery (query);
            
            rs.next(); 
            meta = rs.getMetaData(); 
            feldanzahl = meta.getColumnCount();            
            
            rs.last();
            reihenanzahl = rs.getRow();        
        }
        catch(Exception e) {
            System.out.println(e);
        }
    }
    
// Methoden zum auslesen der Metadaten und Daten 
public  int getfeldanzahl(){
        return feldanzahl;
    }
    
     public String getSpaltenName(int i){
        try{     
            return meta.getColumnName( i );
           }
          
          catch(Exception e){
            System.out.println(e);
            return null;
            }
        
    }
    
    
    public int getzeihlenzahl(){
        return reihenanzahl;
    }
    
    
    public String getInhalt(int x,int zeile){
       try{           
           rs = stmt.executeQuery (query);
           for(int i=0; i< zeile; ++i){
               rs.next();
           }
          inhalt = rs.getString(x);     
                  
         return inhalt; 
       }
       catch(Exception e)
        {
            System.out.println(e);
            return null;
        }
       }
}
```
Teilweise ein wenig umständlich aber du kannst es ja noch optimieren.

Dann machst du dir ne neue Tabelle mit dem Model.

```
Model model = new Model();
JTable t = newJTable(model);
```


----------



## AlArenal (29. Sep 2005)

Zur JTable gibts doch ein Tutorial hier im Forum...


----------



## SEAMAN (29. Sep 2005)

Danke für das Beispiel :lol:


----------

