AJRames Geschrieben 1. Januar 2009 Geschrieben 1. Januar 2009 Hi Leute, ich brauch eure Hilfe da ich absolut nicht mehr weiter komme. Mein Problem ist eine Datenbankabfrage, die ich mit einer While schleife durchführe: String sql = "SELECT * FROM ADRESSEN"; try { ResultSet res = state.executeQuery(sql); String firmatext = null; while (res.next()){ firmatext = res.getString("FIRMATEXT"); System.out.println(firmatext); return firmatext; } }catch (SQLException e) { System.out.println("Der Query ist Fehlerhaft"); } Mein Problem ist das er beim return die Schleife verlässt! Ohne dieses return wird mir alles was ich brauche in der Konsole ausgegeben. Jetz ist es halt so das dieses funktionieren soll, da in der GUI Klasse das hier wartet: knopf.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { edit.append(o.ladeFirmenBez()); edit.append("\n"); } }); Doch leider wird wegen dem return nur eine Firmenbezeichnung ausgegeben... Wäre froh wenn ihr mir helfen könntet, wie ich das anders lösen kann. (Der Stil der Buttonabfrage soll jedoch so bleiben) Gruß AJ Zitieren
robotto7831a Geschrieben 2. Januar 2009 Geschrieben 2. Januar 2009 Hallo! Mein Problem ist das er beim return die Schleife verlässt! Das ist auch die Aufgabe von return. Ohne dieses return wird mir alles was ich brauche in der Konsole ausgegeben. Dafür ist dein System.out.println.... verantwortlich. Frank Zitieren
AJRames Geschrieben 2. Januar 2009 Autor Geschrieben 2. Januar 2009 Hi, ja genau das ist mein Problem. Mein Ziel ist es das mein ActionListener immer den nächsten Datensatz übergeben bekommt und z.B. alle Kunden der Firma anzeigt. Jedoch wird nur ein Kunde ausgegeben, wegen dem Return. Wie kann ich das anstelln das ein Kunde nach dem andern an den ActionListener übergeben wird? Gruß AJ Zitieren
robotto7831a Geschrieben 2. Januar 2009 Geschrieben 2. Januar 2009 Indem Du dir den Resultset merkst und nicht jedes mal beim Aufrufen der Methode eine Anfrage an die DB sendest. Denn sonst bekommst Du immer den ersten. Und dann muss man sich noch den letzten zurück gelieferten Datensatzindex merken. Über eine Klassenvariable z. B. Und diese jedes mal um eins erhöhen und den entsprechenden Kunde dann als Rückgabewert an die aufrufende Klasse übergeben. Frank Zitieren
AJRames Geschrieben 2. Januar 2009 Autor Geschrieben 2. Januar 2009 Hm, wie meinst du das genau? Ich hatte mir auch überlegt das ergebnis in ein String array zu schreiben, aber das wäre bei vielen Datensätzen einfach zuviel... Wie verhält sich deins bei großem Datenaufkommen? irgendwie ist mir noch kein Licht aufgegangen Danke! Zitieren
robotto7831a Geschrieben 2. Januar 2009 Geschrieben 2. Januar 2009 Das Datenvolumen sollte in beiden Fällen etwa gleich sein + den Verwaltungsoverhaed. Bei deiner Idee wird der Resultset ausgelesen und dann in ein Array geschrieben und anschließend wird durch den Garbagecollector das Resultset aufgeräumt. Bei meinem Vorschlag behälst Du die ganze Zeit den Resultset und fragst diesen nach einander ab. Frank Zitieren
Klotzkopp Geschrieben 2. Januar 2009 Geschrieben 2. Januar 2009 Warum nicht einfach edit an ladeFirmenBez übergeben? Zitieren
AJRames Geschrieben 2. Januar 2009 Autor Geschrieben 2. Januar 2009 Warum nicht einfach edit an ladeFirmenBez übergeben? Warum das? ladeFirmenBez gibt ja den Firmenname wieder, und mit edit.append hänge ich diese dann in meine TextArea. Oder hab ich dich falsch verstanden? Bin kurz vorm aufgeben...nichtmal meine gedachte Lösung mit nem Array krieg ich hin... Zitieren
Klotzkopp Geschrieben 2. Januar 2009 Geschrieben 2. Januar 2009 Warum das?Weil es das einfachste wäre? Anstatt dir dabei einen abzubrechen, wie du eine große Menge Daten aus einer Methode herausbekommst, übergib doch einfach die einzige Referenzvariable, die mit den Daten etwas tut, in diese Methode hinein. Zitieren
AJRames Geschrieben 2. Januar 2009 Autor Geschrieben 2. Januar 2009 Ah, ich glaub jetz weiss ich was du meinst! Dann mach für ladeFirmenBez n konstrukter der n JTextArea erwartet. Dann füge ich die daten, die ich von der DB bekomme, da ein und als return gibst dann wieder n JTextArea? Versteh ich das richtig so? Zitieren
AJRames Geschrieben 2. Januar 2009 Autor Geschrieben 2. Januar 2009 YES! Es geht so!! Danke!!! Also prinzipiell siehts jetz so aus: knopf.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { o.ladeFirmenBez(edit); } }); class Ohr{ public JTextArea ladeFirmenBez(JTextArea area) { //DB Verbindung Herstellen ... String sql = "SELECT FIRMATEXT FROM ADRESSEN";// WHERE FIRMATEXT = 'Ingenieurbüro Plant'"; try { ResultSet res = state.executeQuery(sql); while (res.next()) { String firmatext = res.getString("FIRMATEXT"); area.append(firmatext); area.append("\n"); } }catch (SQLException e) { System.out.println("Der Query ist Fehlerhaft"); } return area; } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.