3x selbes Ergebnis trotz 3x verschiedene Ergebnisse?

Status
Nicht offen für weitere Antworten.

VanillaSky

Mitglied
Hallo,

ich schreibe gerade eine Abfrage für mein Programm, in dem nach Nachname, Vorname etc. gesucht werden kann.
Die Abfrage nach dem Nachnamen funktioniert, aber wenn ich z.B. 3x den Nachnamen Mayer in meiner Datenbank habe, liefert es nur den letzten Eintrag Mayer, und das 3x.
Also statt: Anton Mayer, Barbara Mayer, Claudia Mayer liefert das Ergebnis nur 3x Claudia Mayer.
Versteht jemand, warum das so ist? Habe ich etwas in meinem Quellcode falsch gemacht?

Code:
public Vector suchePerson(String nachname){
Person person = new Person();
Vector tVector = new Vector();
try{
  Statement tStatement = DBConnection.getInstance().createStatement();
  String tSql = "SELECT * FROM person WHERE nachname = '" + nachname + "'";
  ResultSet tResult = tStatement.executeQuery(tSql);
  person = new Person();
  while(tResult.next()){
  person.setNachname(tResult.getString("nachname"));				 
  person.setVorname(tResult.getString("vorname"));
  person.setId(tResult.getInt("id"));
  person.setBueronummer(tResult.getString("bueronummer"));
  person.setEmail(tResult.getString("email"));
  person.setGeburtsdatum(tResult.getString("geburtsdatum"));
  System.out.println(tSql); // Kontrolle
  tVector.addElement(person);
  }			
 tStatement.close();
 }
 catch(SQLException pException)
 {
 pException.printStackTrace();
 }
 return tVector;
}

Der Aufruf erfolgt mit dem folgenden Befehl:
Code:
tErgebnis.setText(String.valueOf(einePerson.suchePerson(tNachname.getText())));

Vielen Dank an alle im Voraus!!! :)
 

Murray

Top Contributor
Die Anweisung
Code:
person = new Person();
muss in die while-Schleife, damit Du für jeden Satz auch wirklich ein neues Objekt erzeugst. Im Moment passiert Folgendes:
1. es wrid ein Person-Objekt angelegt
2. das Person-Objekt wird mit dem ersten Ergebnis belegt
3. das Person-Objekt wird in die Liste eingehängt
4. das selbe Person-Objekt wird mit den Daten des zweiten Treffers beleg
5. das selbe Objekt wird nochmal in die Liste eingehängt
u.s.w.

Das Problem besteht darin, dass beim Einhängen in die Liste nur die Referenz auf das jeweilige Objekt eingefügt wird; das Objekt selbst wird nicht kopiert.
 

VanillaSky

Mitglied
hallo Murray,

ich habe deinen Rat beherzigt und es hat geklappt! Vielen Dank für deine Hilfe, jetzt habe ich wieder etwas dazu gelernt!! :) :toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z SQL Ergebnis in Integer Wert abspeichern Datenbankprogrammierung 3
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
D MySQL mehrzeiliges Ergebnis Durchschnittswerteberechnung Datenbankprogrammierung 2
D Oracle SQL Ergebnis anzeigen und Applet Fehlermeldung Datenbankprogrammierung 12
I SQL_Abfrage-Ergebnis (ResultSet) in String[] speichern Datenbankprogrammierung 29
M JComboBox mit SQL-Ergebnis füllen. Wie? Datenbankprogrammierung 11
G PostGreSQL - Die Abfrage lieferte kein Ergebnis Datenbankprogrammierung 3
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
K Ergebnis aus SQL Abfrage in Array speichern Datenbankprogrammierung 3
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
R Fehler 2601 trotz SQL-UPDATE ? Datenbankprogrammierung 2
E ClassNotFoundException bei verschiedenen MS SQL Treibern trotz Classpath-Eintrag Datenbankprogrammierung 5
T filtern nach expliziten Worten trotz LIKE '%Wort%' Datenbankprogrammierung 2
S Firebird NoClassDefFoundError trotz erfolgreichem Class.forName(...) unter Linux Datenbankprogrammierung 5
M executeBatch() - Inserts trotz Fehler weitermachen Datenbankprogrammierung 5
A NullPointerException trotz getConnection Datenbankprogrammierung 6

Ähnliche Java Themen


Oben