Zum Inhalt springen

While Schleife / Return


AJRames

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;


			}


Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...