arraylist es wird nur der letzte Eintrag angezeigt

thobren

Mitglied
Hallo zusammen,
ich bin nicht nur neu hier im Forum, sondern auch Anfänger in JAVA
und habe folgendes Problem.

Ich lese Daten aus der SQLITE-Datenbank aus. Datenbank funktioniert und es sind 19 kommplette Datensätze vorhanden. Mit JAVA lese ich die Datensätz aus und das funktioniert auch. Jeder Datensatz kommt in ein Objekt und dann in die Liste. Eine Überprüfung hat mir angezeigt, dass in der Liste auch genau 19 Objekte enthalten sind.
Wenn ich aber nach der Schleife ein Objekt aus der Liste mit einem Index anzeigen will, dann wird mir immer nur der letzte Eintrage angezeigt, egal welchen Index ich auswähle "System.out.println("ID: " + ar.get(12).getID());".
Wo liegt der Fehler?
Java:
public static ArrayList<DatenFahrten> ausgabeDaten(){
    	
       DatenFahrten df = new DatenFahrten();
       ArrayList<DatenFahrten> ar = new ArrayList<DatenFahrten>();
       int i =0;
       try{ 
      	 Statement stmt = connection.createStatement();
      	 ResultSet rs = stmt.executeQuery("SELECT ID, FahrtStart FROM fahrten ORDER BY ID asc;");
      	 while (rs.next()) {
          df.setID(rs.getInt("ID"));
        	df.setKilometerStart(rs.getInt("FahrtStart"));
        	ar.add(df);
        	System.out.print(ar.get(i).getID()+", ");
        i++;
      	 }
      	 rs.close();
         connection.close();
    	 }catch (SQLException e) {
          System.err.println("Couldn't handle DB-Query");
       }
    	System.out.println("Anzahl: " + ar.size());
    	System.out.println("ID: " + ar.get(12).getID());
    	return ar;
    }

Vielleicht könnt ihr mir helfen.
Vielen Dank.
 
Zuletzt bearbeitet von einem Moderator:
Verschieb die Zeile
Java:
DatenFahrten df = new DatenFahrten();
an den Anfang der while Schleife.
Du musst für jeden ausgelesenen Datensatz aus der Datenbank ein neues Objekt anlegen. Sonst schreibst du die gelesenen Felder immer in das gleiche Objekt - und überschreibst sie damit.
 

Neue Themen


Zurück
Oben