Hallo Leute.
Mein Programm soll Daten aus einer Datenbank laden. Diese Daten werden in ein Objekt gespeichert,welches dann in einer TableView angezeigt wird.(JavaFX)
Aber hier mal mein Code das man auch versteht was ich meine:
Die Musik Klasse.Diese beinhaltet die Daten die in der Tabelle angezeigt werden sollen.
Dann die Klasse die eine Verbindung zur Datenbank aufbaut:
Und zu guter letzt noch die View:
Nun ist mein Problem das die Daten nicht richtig angezeigt werde. Es wird komischerweise nur die ID und der Titel richtig angezeigt und am ende die Bewertung. Unter Dauer steht dann z.B Horror, dabei würde das unter Genre gehören
Ich finde den Fehler nicht. Mir ist aufgefallen wenn ich die DB nur bis zu Spalte 3 also Dauer auslese, wird die Dauer auch richtig angezeigt.Aber sobald ich alle Spalten einlese steht unter Dauer immer Horror :/
Jemand ne Idee?Ich finde den Fehler nicht....
-GhostfaceChilla-
Mein Programm soll Daten aus einer Datenbank laden. Diese Daten werden in ein Objekt gespeichert,welches dann in einer TableView angezeigt wird.(JavaFX)
Aber hier mal mein Code das man auch versteht was ich meine:
Die Musik Klasse.Diese beinhaltet die Daten die in der Tabelle angezeigt werden sollen.
Java:
public class Music {
public static int idFinally;
private SimpleIntegerProperty id = new SimpleIntegerProperty();
private SimpleStringProperty titel = new SimpleStringProperty();
private SimpleStringProperty playtime = new SimpleStringProperty();
private SimpleStringProperty interpret = new SimpleStringProperty();
private SimpleStringProperty album = new SimpleStringProperty();
private SimpleStringProperty genre = new SimpleStringProperty();
private SimpleDoubleProperty score = new SimpleDoubleProperty();
public Music(int id, String titel,String playtime, String interpret,
String album, String genre, double score) {
setId(id);
setTitel(titel);
setPlaytime(playtime);
setInterpret(interpret);
setAlbum(album);
setGenre(genre);
setScore(score);
}
public int getId(){
return id.get();
}
public void setId(int id){
this.id.set(id);
}
public String getTitel() {
return titel.get();
}
public void setTitel(String titel) {
this.titel.set(titel);
}
public String getPlaytime() {
return playtime.get();
}
public void setPlaytime(String playtime) {
this.playtime.set(playtime);
}
public String getInterpret() {
return interpret.get();
}
public void setInterpret(String interpret) {
this.playtime.set(interpret);
}
public String getAlbum() {
return album.get();
}
public void setAlbum(String album) {
this.playtime.set(album);
}
public String getGenre() {
return genre.get();
}
public void setGenre(String genre) {
this.playtime.set(genre);
}
public Double getScore() {
return score.get();
}
public void setScore(double score) {
this.score.set(score);
}
}
Dann die Klasse die eine Verbindung zur Datenbank aufbaut:
Java:
public abstract class DatabaseConnector {
private static Connection connection;
public static Connection getConnection() {
return connection;
}
public static void setConnection(Connection con) {
DatabaseConnector.connection = con;
}
/**
* Methode um eine Verbindung mit einer Datenbank aufzubauen.
* @param dbName Name der zu ladenden Datenbank
* @throws NamingException
* @throws SQLException
* @throws java.lang.ClassNotFoundException
*/
public static void connectTo(String dbName) throws NamingException, SQLException, ClassNotFoundException{
Class.forName("org.hsqldb.jdbc.JDBCDriver");
setConnection(DriverManager.getConnection("jdbc:hsqldb:file:src/mediabox/database/database;shutdown=true", "", ""));
}
/**
*
* @return Gibt die geladenen Zeilen in Form einer ArrayList zurück
* @throws SQLException
* @throws ConnectionException Fehlermeldung, falls zuvor nicht die @connectTo Methode aufgerufen wurde
*/
public static ArrayList loadEntries() throws SQLException, ConnectionException{
if(connection != null){
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM MUSIC");
ArrayList entries = new ArrayList();
while(rs.next()){
Music m = new Music(rs.getInt(1), rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6),
rs.getDouble(7));
entries.add(m);
}
return entries;
}
else{
throw new ConnectionException("Es besteht keine Verbindung zur "
+ "Datenbank. <ERROR : line 47, DatabaseConnector");
}
}
}
Und zu guter letzt noch die View:
Code:
<TableView fx:id="libraryNode" editable="true" xmlns:fx="http://javafx.com/fxml">
<columns>
<TableColumn text="Index" >
<cellValueFactory>
<PropertyValueFactory property="id" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Titel" >
<cellValueFactory>
<PropertyValueFactory property="titel" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Dauer" >
<cellValueFactory>
<PropertyValueFactory property="playtime" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Interpret" >
<cellValueFactory>
<PropertyValueFactory property="interpret" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Album" >
<cellValueFactory>
<PropertyValueFactory property="album" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Genre" >
<cellValueFactory>
<PropertyValueFactory property="genre" />
</cellValueFactory>
</TableColumn>
<TableColumn text="Bewertung" >
<cellValueFactory>
<PropertyValueFactory property="score" />
</cellValueFactory>
</TableColumn>
</columns>
</TableView>
Nun ist mein Problem das die Daten nicht richtig angezeigt werde. Es wird komischerweise nur die ID und der Titel richtig angezeigt und am ende die Bewertung. Unter Dauer steht dann z.B Horror, dabei würde das unter Genre gehören
Ich finde den Fehler nicht. Mir ist aufgefallen wenn ich die DB nur bis zu Spalte 3 also Dauer auslese, wird die Dauer auch richtig angezeigt.Aber sobald ich alle Spalten einlese steht unter Dauer immer Horror :/
Jemand ne Idee?Ich finde den Fehler nicht....
-GhostfaceChilla-