DB und JTable . brauche Hilfe

Status
Nicht offen für weitere Antworten.

T1M

Bekanntes Mitglied
Hi,
ich möchte das ergebnis einer select anweisung in eine jtable packen.
den db connect hab ich hinbekommen. :D hab mir auch was überlegt wie es gehen sollte ... theoretisch ..., praktisch klappts leider net. :?
aber ich denk mal, ihr seht scho, worans liegt.
ok, hauptklasse ist klasse Tafel. darin liegt die jtable, da wird der db-connect gemacht.
klasse KreissaalPat beinhaltet die variablen und methoden um die strings aus der klasse DBFrids auszulesen. hier gibt es die methode getKrspat(), wo die sql anweisung drinsteht.
ich möchte für jeden patienten ein neues objekt anlegen, welches in eine zeile der jtable soll.

DBFrids:
Code:
...
public KreissaalPat[] getKrspat()
    {
    	System.out.println("getPatienten");
    	int i=0;
    	KreissaalPat[] patienten= new KreissaalPat[100];
    	String sql = "select station, name " +
    			"from krstafel2";
    
        Statement query = null;
        ResultSet daten = null;
        
        try 
        {
             query = db.createStatement();
             daten = query.executeQuery(sql);
             while(daten.next())
             {
             	String Name = daten.getString("name");
             	String Station = daten.getString("station");;
             	
             	patienten[i] = new KreissaalPat(Station, Name);
             	i++;
             }
        daten.close();
        query.close();
        }
        catch(Exception e) {System.out.println("Fehler in Abfrage: "+ e);}
        
        return patienten;
    }
}

KreissaalPat
Code:
public class KreissaalPat extends Object
{
	private String Station;
	private String Name;
	
	
	public KreissaalPat()
	{
		initPat();
	}
	
	public KreissaalPat(String stat, String na)
	{
		Station=stat;
		Name=na;

	}
	
	public void initPat()
    {
		 Station = "";
		 Name = "";
    }
	
	public String getName()
	{
	    return Name;
	}
	
	public String getStation()
	{
	    return Station;
	}
}

Tafel (hier gibts probleme)
Code:
...
  KreissaalPat[] pats = new KreissaalPat[100];
	  
	  	DBFrids db = new DBFrids("FRIDS_TEST");
	  	pats = db.getKrspat();
		
	  
	  Object[][] data = new Object[][];
	  
	  for (int i=0;i<=99;i++)
	  {
	  	for (int j=0;j<=99;j++)
	  	{
	  		data[i][j]=
	  		{
	  				pats[i].getStation(), pats[i].getName()
			};
	  	}
	  	
	  }
...

JTable
Code:
model = new DefaultTableModel(data, columnNames);
        table = new JTable(model)
		{
	     public Class getColumnClass(int i)
	     {
	     	return Object.class;
	     }
	   };
Also, mein prob is, das das so net geht. hoffe ihr könnt mir weiterhelfen.
Danke,
T1M
 

T1M

Bekanntes Mitglied
habs mal weiterversucht.
Code:
KreissaalPat[] pats = new KreissaalPat[100];
	  
	  	DBFrids db = new DBFrids("FRIDS_TEST");
	  	pats = db.getKrspat();
	
	  	for (int i=0;i<=99;i++)
		  {
		  	for (int j=0;j<=99;j++)
		  	{
		  		Object[][] data =
		  		{
		  				pats[i].getStation(), pats[i].getName(), pats[i].getP_(), pats[i].getET(),
		  				pats[i].get.SSW(), pats[i].getG(), pats[i].getP(), pats[i].getF(),
		  				pats[i].getLage(), pats[i].getDiagnose(), pats[i].getTherapie(),
		  				pats[i].getV(), pats[i].getCTG(), pats[i].getInf(), pats[i].getAufkl()
		  		};
		  				
		  	}
		  	
		  }
es kommen noch zwei fehler:
das semikolon in zeile 3 wird unterstrichen: Syntax error on token ";", { expected after this token
und bei pats.getStation() (und dann den anderen türlich auch) sagt er: Type mismatch: cannot convert from String to Object[]

THX anyway,
T1M
 

T1M

Bekanntes Mitglied
neuste variante:

Code:
KreissaalPat[] pats = new KreissaalPat[100];
	  	//DBFrids db = new DBFrids("FRIDS_TEST");
	  	pats = dbfrids.getKrspat();
	  	
	
	  	for (int i=0;i<=99;i++)
		  {
	  		data[i][0]= pats[i].getStation();
	  		data[i][1]= pats[i].getName();
		  }
jetzt bekomm ich aber eine ArrayIndexOutOfBoundsException.
hab das dazu gefunden: Die ArrayIndexOutOfBoundsException tritt auf, wenn versucht wird, ein Array mit einem ungültigen Index anzusprechen.
ok, und das heißt für mich jetzt ... was???
 
R

Roar

Gast
entweder es gibts data oder parts nicht. ich würd mal auf letztens tippen...

btw: es heißt Kreißsaal oder Kreisssaal :p
 

T1M

Bekanntes Mitglied
müsste ich dann
Code:
 KreissaalPat[] pats[] = new KreissaalPat[100];
schreiben?
btw. es heißt pats, nicht parts ... :bae:
 
R

Roar

Gast
nein, müsstest du nicht, weils quark ist, was soll das bringen. die antwort bleibt gleich: entweder es gibt data oder pats nicht. ich würd mal auf letzeres tippen. warum überprüfst du in der for schleife auch auf <= 99 ? woher willst du wissen dass da 100 elemente dri nsind? überprüfe auf < pats.length und vermultlich kriegst keine excption mehr.

warum verwendest du eigentlich keine listen? dann könntest du dir den arrayquark sparen :-/
 

T1M

Bekanntes Mitglied
hmm.., das mit dem pats.length is ne coole idee!
und warum ich keine listen verwende ..., wahrscheinlich weil ich n noob bin und davon kaum ahnung habe. und von listen goar keine. :?
aber warum gibt es pats denn net? ich initialisiere es doch?!
KreissaalPat[] pats = new KreissaalPat[100];
oder?
hmm.., morgen mal weiterversuchen. hab das prog net daheim.
 

Bleiglanz

Gesperrter Benutzer
T1M hat gesagt.:
hmm.., das mit dem pats.length is ne coole idee!
und warum ich keine listen verwende ..., wahrscheinlich weil ich n noob bin und davon kaum ahnung habe. und von listen goar keine. :?
aber warum gibt es pats denn net? ich initialisiere es doch?!
KreissaalPat[] pats = new KreissaalPat[100];
oder?
hmm.., morgen mal weiterversuchen. hab das prog net daheim.
du erzeugst zwar ein array, aber

pats[0]==pats[1]==....==pats[99]=null

(ein array wird immer mit nullen initialisiert)
 

T1M

Bekanntes Mitglied
Bleiglanz hat gesagt.:
(ein array wird immer mit nullen initialisiert)
und deswegen bekomm ich ne ArrayIndexOutOfBoundsException?
bekomm ich im übrigen auch mit pats.length. :(
wie muß ich das denn sonst machen, dass er pats kennt?
 

T1M

Bekanntes Mitglied
humpf,
habs mal n bissl umgeschrieben. jetzt bekomm ich keinen fehler mehr, allerdings ist das panel, in dem die jtable liegen sollte leer ...
Code:
...
public void getDaten()
	{
		System.out.println("getDaten");

	 String[] columnNames =
	 {
	 		"Station",
            "Name",
	};
	  	  
	  
	 //XXXXXXXXXXXXXXXXXXX So oder so ähnlich  XXXXXXXXXXXXXXXXXXXXXXXXXX	
	  	
	  	//DBFrids db = new DBFrids("FRIDS_TEST");
	  System.out.println("vor getKrs: " + pats);	
	  pats = dbfrids.getKrspat();
	  System.out.println("nach getKrs: " + pats);
	  
	  for (int i=0; i<pats.length; i++)
	  {
	  	data[i][0]= pats[i].getStation();
	  	data[i][1]= pats[i].getName();
	  }
	  System.out.println("nach for-schleife: " + pats);
	  model = new DefaultTableModel(data, columnNames);
      table = new JTable(model)
		{
	     public Class getColumnClass(int i)
	     {
	     	return Object.class;
	     }
	   };
	   
	  add(table, panel_table, gbc, 0, 0, 1, 1);
	  table.getTableHeader().setReorderingAllowed(false); //kein verschieben der columns
	   table.setRowHeight(table.getRowHeight() + 35); // Zeilenhöhe festlegen
	   table.setFont(new Font("Arial", Font.TRUETYPE_FONT, 10));
	   table.getCellEditor(row, column);

	   //Spaltenbreite festsetzen
	   TableColumn tcolumn = table.getColumn("Station");
	   tcolumn.setMinWidth(40);
	   tcolumn.setMaxWidth(40);
	   tcolumn = table.getColumn("Name");
	   tcolumn.setMinWidth(120);
	   tcolumn.setMaxWidth(120);

	   table.setDefaultRenderer(Object.class, new ColorTableCellRenderer()); //Typ Object,
		//Table wird im gegensatz zu Color.class editirbar!!!
	}
...
liegt das daran, dass die anderen panels, buttons, etc. in 'public Tafel(db){...}' liegen???

edit: bei der ausgabe steht das die jtable null ist. aber es sind daten in der db vorhanden. warum schreibt er dann nix in die jtable???

edit2: hab mal aus public void, public Objext gemacht und am ende return table; - bringt auch nix ... :(

edit3: so, habs jetzt mal in public Tafel() gepackt:
Code:
...
String[] columnNames =
    {
          "Station",
            "Name",
   };
              
    //XXXXXXXXXXXXXXXXXXX So oder so ähnlich  XXXXXXXXXXXXXXXXXXXXXXXXXX   
        
        //DBFrids db = new DBFrids("FRIDS_TEST");
          KreissaalPat[] pats = new KreissaalPat[100];
     System.out.println("vor getKrs: " + pats);   
     pats = dbfrids.getKrspat();
     System.out.println("nach getKrs: " + pats);
    
     for (int i=0; i<pats.length; i++)
     {
        data[i][0]= pats[i].getStation();
        data[i][1]= pats[i].getName();
        }
     System.out.println("nach for-schleife: " + pats);
   } 
...
aber jetzt bekomm ich das: Exception in thread "main" java.lang.NullPointerException at Tafel.<init>(Tafel.java:409) (hier: zeile 18 )
hiiiiilfeeee!!!!!!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben