# 3x selbes Ergebnis trotz 3x verschiedene Ergebnisse?



## VanillaSky (11. Apr 2006)

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?


```
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:

```
tErgebnis.setText(String.valueOf(einePerson.suchePerson(tNachname.getText())));
```

Vielen Dank an alle im Voraus!!!


----------



## Murray (11. Apr 2006)

Die Anweisung

```
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 (11. Apr 2006)

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:


----------

