Eintrag verschwindet aus Liste

  • Themenstarter Themenstarter Morgaine
  • Beginndatum Beginndatum
M

Morgaine

Gast
Hi,

irgendwie verschwinden aus meiner Fileliste anscheinend Einträge. Wieso?

Java:
if(FileListe.size() > 0) {
				System.out.println(FileListe.size());
				k = 0;
				for(int a = 0; ((k-1)*1000-a) < FileListe.size();k++) {
                                        //Schreibt die Filenamen in einen String hintereinander. Maximal 1000 da SQL nicht mehr gleichzeitig auswerten kann. k= Anzahl der Durchläufe, a = bereits entferne Elemente aus der Liste
					liste = FileListetoString(FileListe,k*1000-a,1);
					if(!liste.equals("")){
						stmt2 = cnRAM.createStatement();
                                                //Sucht alle Files in der Datenbank und liefert diese als Recordset zurück
                                                // SELECT Filename FROM Tabelle WHERE Filename in (liste)
						rs3 = stmt2.executeQuery(dba.SQLAbfrage[105] + liste + dba.SQLAbfrage[111]);
						while(rs3.next()&& FileListe.size() > 0){
                                                        //Wenn das File in der der Fileliste entahlten ist, was es ja sein muss
							if(FileListe.contains(rs3.getString(1).substring(0, 17))){
                                                        //Wenn der Wert gleich ist wird das File aus der Fileliste entfernt
								if(rs3.getInt(2) == WerteListe.get(FileListe.indexOf(rs3.getString(1).substring(0, 17)))){
									WerteListe.remove(FileListe.indexOf(rs3.getString(1).substring(0, 17)));
									FileListe.remove(rs3.getString(1).substring(0, 17));
									a++;
								}
							} else
                                                                //Ausgabe aller Files die nicht in der Fileliste gefunden wurden, was ja eigentlich nicht sein kann da die liste aus der Fileliste erzeugt wird
								System.out.println(rs3.getString(1).substring(0, 17));
						} 	
						rs3.close();
						stmt2.close();
						System.out.println("RAM 1: " + FileListe.size());
					}
				}

Es werden eine Menge Files ausgegeben, die in der Fileliste angeblich nicht vorhanden sind, jedoch kann das eigentlich nicht sein da die liste aus der Fileliste erzeugt wird. Kann mir wer helfen?
 
von Log/ Debugging hälst du nichts?

vor der While-Schleife gehört:
> System.out.println("FileListe hat .. Elemente, und zwar folgende: ";
> ... Auflistung

zu Beginn jeder while-Schleife kommt dann
> aktueller Eintrag ist .., [evtl. noch Nummer mitzählen, 17. Eintrag]

was immer dann an if usw. passiert alles loggen:
> Eintrag wurde in FileList gefunden/ nicht gefunden, von .. Einträgen bisher waren .. in der Liste/ .. dagegen nicht

am Ende Zusammenfassung der Ergebnisse:
> FileListe hat .. Elemente
> ResultSet brachte .. Einträge,
> davon Übereinstimmungen .., Unterschiede ..

int-Variablen zählen, System.out.println, einfachste Befehle die dir das gesamte Verhalten verraten,

aus dem Code kann man das nicht direkt erkennen, finde ich,
edit: falls die Liste File-Objekte enthält, wird ein String natürlich nicht gefunden, dann würdest du aber überhaupt nichts finden, ist das so?
vielleicht lieber in
> liste = FileListetoString()
suchen..
 
Zuletzt bearbeitet von einem Moderator:
noch ein Hinweis:
schreibe
String fname = rs3.getString(1).substring(0, 17);
und verwende dann die kurze Variable an den zig benötigten Stellen, jetzt mit dem Log ja noch mehr,

wenn du überall rs3.getString(1).substring(0, 17) stehen hast ist das schwer zu lesen, schwer zu ändern (falls 18 statt 17),
auch bisschen Arbeit jedesmal den Substring auszurechnen,

und für etwas trickreiche Fehler wie du hier einen ansprichst kann das auch der Grund seit, etwa wenn rs3.getString(1) jedes mal was anderes liefert,
das scheint mit aber nicht der Fall zu sein, und fairerweise muss man sagen, dass auch lokale Variablen derartige Fehler ermöglichen,
z.B. gerade wenn rs3.getString(1) was anderes liefern soll, die Variable aber noch auf einen alten Wert zeigt
 

Zurück
Oben