# DB-Abfrageergebnis in JTable packen?



## T1M (11. Jul 2005)

Hi,
ich hab ne JTable, die ich mit ner abfrage füllen möchte.
die datenbankanbindung, und die abfrage müssten stimmen. mein problem ist jetzt, das ich nicht genau weiß wie ich das ergebnis der abfrage in meine jtable bekomme.
habs mal, mit hilfe, so versucht:
die jtable:


```
CollectionTableModel model = new CollectionTableModel()
		{
        	  protected Object getValueAt(Object src, int column)
        	  {
        	    KreissaalPat p = (KreissaalPat)src;
        	    return (column==0)?p.getStation():p.getName();
        	  }

        	  protected void setValueAt(Object dst, int column, Object value)
        	  {
        	    KreissaalPat p = (KreissaalPat)dst;
        	    if(column==0)
        	      p.setStation((String)value);
        	    else
        	      p.setName((String)value);
        	  }

        	  public int getColumnCount()
        	  {
        	    return 2;
        	  }

        	  public String getColumnName(int column)
        	  {
        	    return (column==0)?"Station":"Name";
        	  }
        };
        
        table = new JTable(model);
```

Klasse KreissaalPat:

```
public class KreissaalPat extends Object
{
	public String Station;
	public String Name;
	public String P_;  
	public String ET;
	public String SSW;
	public String G;
	public String P;
	public String F;
	public String Lage;
	public String Diagnose;
	public String Therapie;
	public String v;  //dazugehöriger String von Tafel.java: "v ^"
	public String CTG;
	public String Pädiater_informiert;  //dazugehöriger String von Tafel.java: "Pädiater informiert" 
	public String AN_Aufklärung;  //dazugehöriger String von Tafel.java: "AN-Aufklärung"
	
	public KreissaalPat()
	{
		initPat();
	}
	
	public void initPat()
    {
		 Station = "";
		 Name = "";
		 P_ = "";
		 ET = "";
		 SSW = "";
		 G = "";
		 P = "";
		 F = "";
		 Lage = "";
		 Diagnose = "";
		 Therapie = "";
		 v = "";
		 CTG = "";
		 Pädiater_informiert = "";
		 AN_Aufklärung = "";
```

Die DB-Abfrage:

```
public Collection getKreissalPatienten()
    {
    	String sql = "select * "+
    				 "from krstafel2";
    	
    	  Collection list = new ArrayList(128);
    	  
    	  Statement query = null;
          ResultSet daten = null;
          int i = 0;
          try
  		  {
          		query = db.createStatement();
          		daten = query.executeQuery(sql);

          		//die Datenbankabfrage
          		while(daten.next())
          		{
          			KreissaalPat p = new KreissaalPat();
          			p.setStation(daten.getString("Station"));
          			p.setName(daten.getString("Name"));
          			list.add(p);
          			i+=i;
          		}
  		  }
          catch(Exception e) 
	      {
          		i=0;
	      };
	      CollectionTableModel m = (CollectionTableModel) table.getModel();
	      m.setData(getKreissalPatienten());
	      System.out.println("Anzahl = " + i);    	
	      return list;
    }
```

und mein CollectionTableModel:

```
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import java.util.Collections;
import java.util.*;

abstract class CollectionTableModel extends AbstractTableModel
{
	  private ArrayList data = new ArrayList(512);

	  public void setData(Collection data)
	  {
	    this.data.clear();
	    this.data.addAll(data);
	    fireTableDataChanged();
	  }

	  public Collection getData()
	  {
	    Collection result = new ArrayList(data.size());
	    result.addAll(data);
	    return result;
	  }

	  protected abstract Object getValueAt(Object src, int column);

	  public Object getValueAt(int row, int column)
	  {
	    return getValueAt(data.get(row), column);
	  }

	  protected abstract void setValueAt(Object dst, int column, Object value);

	  public void setValueAt(Object value, int row, int column)
	  {
	    setValueAt(data.get(row), column, value);
	    fireTableRowsUpdated(row, row);
	  }

	  public int getRowCount()
	  {
	    return data.size();
	  }
	}
```
sry das es soviel code ist. hoffe es kann mir wer helfen. maybe gehts auch einfacher??
problem ist, das er getStation(), getName(), setStation() und setName() nicht kennt. die müsst ich irgendwie in der KLasse KreissaalPat implementieren. nur wie?!
Danke!!!
 T1M


----------



## bambi (11. Jul 2005)

So:


```
public String getName()  {
    return Name;
}

public void setName(String name)  {
    Name = name;
}

public String getStation()  {
    return Station;
}

public void setStation(String station)  {
    Station = station;
}
```

Uebrigens - kleiner Tip: Variablennamen sollten immer klein geschrieben werden. Also lieber name statt Name u.s.w.
Nur Klassennamen und Konstanten werden nach Konvention gross geschrieben. Nur fuer's naechste Projekt...  :wink:


----------



## T1M (11. Jul 2005)

alles klar, merk ich mir.
werds morgen gleich mal ausprobieren! hab das ganze zeug nich hier ...
hoffe es klappt! sag dann bscheid.
auf jedenfall mal n digges danke!


----------



## T1M (12. Jul 2005)

er tuts nicht.
muß mal schauen warum ...


----------



## bambi (12. Jul 2005)

Was meinst Du mit "er tuts nicht"? Was macht er denn? Eine Fehlermeldung, die Du posten kannst?


----------



## T1M (13. Jul 2005)

ne, keine fehlermeldung.
er columnheads sind da, aber keine werte darunter. ich schau mir da lieber nochmal die db an. möglich das es doch daran liegt.
 :? hab halt noch zu wenig ahnung davon ...


----------

