PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Help! Problem mit den Vector-Inhalten



DC-7C
20-09-2006, 11:03
Hallo allerseits!

hab ein merkwürdiges Problem, bin schon fast am Verzweifeln...

Ich hole Daten aus der DB und packe sie zuerst in eine Klasse (nennen wir sie mal myClass), die dafür set-Methoden besitzt. Da ich aber mehrere Datensätze haben kann, packe ich dann diese Klasse in ein Vector. Danach wird myClass initialisiert, mit neuen Daten gefüllt und wieder in den Vector gepackt. So sieht es ungefähr aus:

ResultSet rs = myPreparedStatement.executeQuery();
while(rs.next()){
myClass = new MyClass();
myClass.setVar1(rs.getInt("Column1"));
myClass.setVar1(rs.getString("Column2"));
...
myClass.setVarX(rs.getInt("ColumnX"));
vector.add(myClass);
myClass = null;
}

am Ende ist mein Vector mit den Elementen gefüllt, die alle dieselbe Werte haben - nämlich den zuletzt aus der DB geholten Datensatzes.

Danke im Voraus

mwanaheri
20-09-2006, 15:45
Hm, das Füllen des Vektors sieht korrekt aus. Kann es sein, dass der Fehler beim Auslesen liegt?

falke2203
20-09-2006, 16:45
Du kannst mal folgendes versuchen:

Verschieb die Deklaration der Variablen myClass in die Schleife, sodass das erste Statement in der Schleife dann MyClass myClass = new MyClass(); lautet.
Mach mal testweise Ausgaben auf der Konsole, mit den Rückgabewerten von einem (eindeutigen!) rs.getXXX()-Aufruf, bspw. mit dem Primärschlüssel.
Nicht schlagen, aber prüf ob die Variablen in MyClass nicht static sind ;)

Waxolunist
26-09-2006, 12:24
ResultSet rs = myPreparedStatement.executeQuery();
while(rs.next()){
myClass = new MyClass();
myClass.setVar1(rs.getInt("Column1"));
myClass.setVar1(rs.getString("Column2"));
...
myClass.setVarX(rs.getInt("ColumnX"));
vector.add(myClass);
myClass = null;
}

Du initialisierst immer wieder die selbe Variable.

Es müsste so gehen:


ResultSet rs = myPreparedStatement.executeQuery();
while(rs.next()){
MyClass myClass = new MyClass();
myClass.setVar1(rs.getInt("Column1"));
myClass.setVar1(rs.getString("Column2"));
...
myClass.setVarX(rs.getInt("ColumnX"));
vector.add(myClass);
//myClass = null;
}

mwanaheri
26-09-2006, 23:21
Im vorliegenden Fall dürfte das keinen Unterschied machen, aber normalerweise ist eine Variablenanmeldung in einer Schleife eine echte Performancebremse.

Allerdings scheint der OP ohnehin das Interessse verloren zu haben...