Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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!

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

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

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?

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;


			}


Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.