# Von Datenbank --> Vector --> JTable Problem



## JavaAnfänger2 (24. Okt 2005)

Hallo,

wie kann ich die Daten, die icn im folgenden Bsp. aus der Datenbank auslesen in einen *Vector* speichern um diesen dann in ein JTable zu übertragen??
Im folgenden Bsp. lese ich die Daten aus der Datenbank und rufe dann den Konstruktor der Klasse ObjekteFilmDB,


(Habe bereits ziemlich alle Beiträge in diesem Forum bezüglich meines Problems durchsucht, aber hab bei meiner Varinate etwas Probleme....



```
//Klasse DatenFilmDB

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

public class DatenFilmDB {

	Connection con = null;

	Statement stmt = null;
	
	
	Vector auflistung  = new Vector();
	ObjekteFilmDB objekteFilmDB;
	
	public DatenFilmDB() throws SQLException {
		con = new DBConnection().getConnection();
		stmt = con.createStatement();
		fetchData();
		
		
	}

	public void fetchData() throws SQLException {
		ResultSet ergebnis = stmt.executeQuery("SELECT * FROM Filmdatenbank");
		while (ergebnis.next()) {
		
			 new ObjekteFilmDB(ergebnis.getInt(1),
			 					ergebnis.getString(2),
			 					ergebnis.getString(3),
								ergebnis.getInt(4),
								ergebnis.getString(5),
								ergebnis.getString(6),
								ergebnis.getInt(7));
		
			 //Schreiben in Vector???????
		}
		stmt.close();

	}

	public void datenAusgeben() {
		for (int i=0; i<6; i++) {
			System.out.println(auflistung.elementAt(i));
		}
	}
	
	public Vector getAuflistung() {
		return auflistung;
	}

	public static void main(String[] args) {
		try {
			new DatenFilmDB();
		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}

	}

}
```


```
public class ObjekteFilmDB {
	
	private int id;
	private String filmtitel;
	private String schauspieler;
	private int herausgabejahr;
	private String bewertung;
	private String länge;
	private int filmnummer;
	
	
	public ObjekteFilmDB(int id, String filmtitel, String schauspieler,
			int herausgabejahr, String bewertung, String länge, int filmnummer) {
		this.id = id;
		this.filmtitel = filmtitel;
		this.schauspieler = schauspieler;
		this.herausgabejahr = herausgabejahr;
		this.bewertung = bewertung;
		this.länge = länge;
		this.filmnummer = filmnummer;
		
	}
	
	public int getId() {
		return id;
	}
	
	public void setId(int id)
	{
		this.id = id;
	}
	

	public String getBewertung() {
		return bewertung;
	}
	
	public void setBewertung(String bewertung) {
		this.bewertung = bewertung;
	}
	
	public int getFilmnummer() {
		return filmnummer;
	}
	
	public void setFilmnummer(int filmnummer) {
		this.filmnummer = filmnummer;
	}
	
	public String getFilmtitel() {
		return filmtitel;
	}
	
	public void setFilmtitel(String filmtitel) {
		this.filmtitel = filmtitel;
	}
	
	public int getHerausgabejahr() {
		return herausgabejahr;
	}
	
	public void setHerausgabejahr(int herausgabejahr) {
		this.herausgabejahr = herausgabejahr;
	}
	
	public String getLänge() {
		return länge;
	}
	
	public void setLänge(String länge) {
		this.länge = länge;
	}
	
	public String getSchauspieler() {
		return schauspieler;
	}
	
	public void setSchauspieler(String schauspieler) {
		this.schauspieler = schauspieler;
	}
}
```


----------



## krey (24. Okt 2005)

Du musst das TableModel überschreiben! Guck doch mal ins FAQ! Da steht alles


----------



## JavaAnfänger2 (25. Okt 2005)

Hallo,

möchte aber erstmal alles in einem Vector unterbringen(später erst JTable). Wies aber nicht genau wie ich diesen implementiere. Im Moment rufe ich den Konstruktor der anderen Klasse auf und übergeb ihm die Daten. Wenn ich einen Vector erstelle und die Daten aus der DB hinzufüg bekomme ich immer eine NullPointerException

Wie implementier ich den Vector??

Danke für eure Hilfe....


----------



## Mag1c (25. Okt 2005)

Moin,


```
ObjekteFilmDB film = new ObjekteFilmDB(ergebnis.getInt(1), 
                         ergebnis.getString(2), 
                         ergebnis.getString(3), 
                        ergebnis.getInt(4), 
                        ergebnis.getString(5), 
                        ergebnis.getString(6), 
                        ergebnis.getInt(7));
auflistung.add(film);
```

Gruß
Mag1c


----------



## Guest (25. Okt 2005)

Hallo,

das hab ich schon probiert, funktioniert auch nicht.



```
ObjekteFilmDB film = new ObjekteFilmDB(ergebnis.getInt(1),
			 					ergebnis.getString(2),
			 					ergebnis.getString(3),
								ergebnis.getInt(4),
								ergebnis.getString(5),
								ergebnis.getString(6),
								ergebnis.getInt(7));
		
			 auflistung.add(film);
			 System.out.println(auflistung.elementAt(0));
```

Wenn ich mal "testhalber" den ersten Wert des Vectors auslese bekomme ich immer folgende Werte:


ObjekteFilmDB@89ae9e
ObjekteFilmDB@89ae9e
ObjekteFilmDB@89ae9e

Was mache ich hier falsch???

danke für eure Hilfe...


----------



## Guest (25. Okt 2005)

Bei 


```
auflistung.add(film);
			 
			 System.out.println(auflistung.elementAt(1));
```

bekomme ich folgende Fehlermeldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
	at java.util.Vector.elementAt(Vector.java:432)
	at DatenFilmDB.fetchData(DatenFilmDB.java:44)
	at DatenFilmDB.<init>(DatenFilmDB.java:25)
	at DatenFilmDB.main(DatenFilmDB.java:58)


----------



## Mag1c (26. Okt 2005)

Moin,



			
				Anonymous hat gesagt.:
			
		

> Hallo,
> 
> Wenn ich mal "testhalber" den ersten Wert des Vectors auslese bekomme ich immer folgende Werte:
> 
> ...



Du machst garnichts falsch. Das ist völlig korrekt. Ruft man System.out.println(...) mit einem Objekt auf, so wird dessen toString()-Methode aufgerufen und das Ergebnis angezeigt. Sofern diese nicht überschrieben wurde, liefert die default-Implementierung <Klassenname>@<Hashcode>. Bau mal in die Klasse ObjekteFilmDB testhalber folgendes ein:


```
public String toString () {
        return id + ":" + filmnummer + ":" + filmtitel;
    }
```

Gruß
Mag1c


----------

