JComboBox mit SQL-Ergebnis füllen. Wie?

Status
Nicht offen für weitere Antworten.
M

madmad

Gast
Hallo zusammen,

ich hoffe ihr könnt mir helfen. Von einer SQL Abfrage bekomm ich folgendes Ergebnis:

Code:
BERUFSGRUPPE                      NAME
----------------------------------------------------------
MALER                             Müller
MALER                             Schmidt
MALER                             Mayer
MALER                             Ecke
LACKIERER                         Lorenz
LACKIERER                         Zug
LACKIERER                         Bäcker

Alle Maler bzw. Lackierer sollen in jeweils einer eingenen JComboBox angezeigt werden. Ich hab versucht zwei
Vectoren zu füllen, jedoch bleiben diese immer leer.

Habt ihr vielleicht eine Idee wie man das Problem lösen könnte.

Vielen Dank für eure Hilfe.
Gruß
Markus


Code:
String			BerufsGruppe;	
String			Name;				
String 			Maler = "MALER";
String			Lackierer = "LACKIERER";

Vector vMaler = new Vector();
Vector vLackierer = new Vector();

ResultSet result = myStatement.executeQuery(abfrageString);
			  
			    //Abfrageergebnis auswerten und ausgeben 

		            do {
		          
			        System.out.println("BERUFSGRUPPE: " +result.getString("berufsgruppe"));
			        System.out.println("NAME: " +result.getString("name"));

			        BerufsGruppe = result.getString("berufsgruppe");
			        Name = result.getString("name");
			        	
			        if (Maler.equals(BerufsGruppe)){
			        	vMaler .add(Name);
			        }

			        if (Lackierer.equals(BerufsGruppe)){
			        	vLackierer .add(Name);
			        }
			        
			        System.out.println("vMaler:" + vMaler + " vLackierer:" +vLackierer );
					   
		           } while (result.next());

			    	ComboBoxModel ComboModelMaler = new DefaultComboBoxModel(vMaler);
			    	ComboBoxModel ComboModelLackierer  = new DefaultComboBoxModel(vLackierer );
	           
			    	jComboMaler.setModel(ComboModelMaler);
			    	jComboLackierer.setModel(ComboModelLackierer);
 

The_S

Top Contributor
Bekommst du keine Exception? Solltest du, weil du eine do-while und keine while Schleife zum Auslesen des ResultSets verwendest.
 

msd

Mitglied
Hallo Hobbit,

nein, es wird keine Exception geworfen. Ich habe gestern aber was versehentlich weggelassen. Die do-while Schleife ist noch von einem if Block eingeschlossen, der einen Dialog zeigt, wenn das Resultset leer ist.

Hat jemand eine Idee wie ich die Vektoren gefüllt bekomme? So wies jetzt ist, bleiben Sie immer leer. Ich habe keine Ahnung warum.

Danke sehr!

Gruß
Markus

Code:
String         BerufsGruppe;   
String         Name;            
String          Maler = "MALER";
String         Lackierer = "LACKIERER";

Vector vMaler = new Vector();
Vector vLackierer = new Vector();

ResultSet result = myStatement.executeQuery(abfrageString);
          
//Abfrageergebnis auswerten und ausgeben 

if (result.next()) {

          do {
                 System.out.println("BERUFSGRUPPE: " +result.getString("berufsgruppe"));
                 System.out.println("NAME: " +result.getString("name"));

                 BerufsGruppe = result.getString("berufsgruppe");
                 Name = result.getString("name");
                    
                 if (Maler.equals(BerufsGruppe)){
                    vMaler .add(Name);
                 }

                 if (Lackierer.equals(BerufsGruppe)){
                    vLackierer .add(Name);
                 }
                
                 System.out.println("vMaler:" + vMaler + " vLackierer:" +vLackierer ); 

         } while (result.next());
 }

else {		            
        JOptionPane.showMessageDialog(frame,
        "Keine Daten gefunden! \n\n",
        "Suchen - Keine Daten gefunden",
        JOptionPane.ERROR_MESSAGE);
}

                ComboBoxModel ComboModelMaler = new DefaultComboBoxModel(vMaler);
                ComboBoxModel ComboModelLackierer  = new DefaultComboBoxModel(vLackierer );
              
                jComboMaler.setModel(ComboModelMaler);
                jComboLackierer.setModel(ComboModelLackierer);
 
S

SlaterB

Gast
du hast ja schon vorbildlich ein paar Ausgabe-Anweisungen drin, dann nehme ich mal an,
dass du auch Ausgaben im Log hast die Schleife also durchlaufen wird,


System.out.println("BERUFSGRUPPE: " +result.getString("berufsgruppe"));
ist aber schlecht,
die BerufsGruppe hast du doch in der String-Variablen BerufsGruppe ,
schreibe dann
System.out.println("BERUFSGRUPPE: " +BerufsGruppe);



die Ausgaben kann man noch weitertreiben:

System.out.println("BERUFSGRUPPE: " +BerufsGruppe+", = Maler?: "+(Maler.equals(BerufsGruppe))+", = Lakierer?: "+
(Lackierer.equals(BerufsGruppe)));

am Ende in der Schleife gibst du dann den Füllstand der Listen aus:
System.out.pritnln("Maler bisher: "+vMaler.size() + ..);

ach halt, das hast du ja schon,
na dann musst du doch wissen, ob vMaler leer ist oder Elemente enthält

> Hat jemand eine Idee wie ich die Vektoren gefüllt bekomme? So wies jetzt ist, bleiben Sie immer leer. Ich habe keine Ahnung warum.

also wie sieht es nun konkret aus?
bekommst du die Ausgaben pro while-Schleifendurchgang?
kommt bei den Vergleichen true raus?
werden die Listen trotz true nicht gefüllt
oder sind die Listen voll aber werden nur nicht in der GUI angezeigt?
was ist der aktuelle Stand?

poste bitte auch dein Log mit den Ausgaben
 

@x.l

Bekanntes Mitglied
Achte mal auf die Groß-/Kleinschreibung, ich vermute die Spalten heissen nicht "berufsgruppe" sondern evtl. "BERUFSGRUPPE" oder "Berufsgruppe". Lege ausserdem den Wert zuerst auf einer Variablen ab:
Code:
if (result.next()) { 

          do { 
                 //probier auch mal den SpaltenIndex anstelle des SpaltenNamens
                 BerufsGruppe = result.getString("berufsgruppe");  
                 Name = result.getString("name"); 

                 System.out.println("BERUFSGRUPPE: " +BerufsGruppe);
                 System.out.println("NAME: " +Name); 
                    
                 if (Maler.equals(BerufsGruppe)){ 
                    vMaler .add(Name); 
                 } 

                 if (Lackierer.equals(BerufsGruppe)){ 
                    vLackierer .add(Name); 
                 } 
                
                 System.out.println("vMaler:" + vMaler + " vLackierer:" +vLackierer ); // Warum diese Zeile?

         } while (result.next()); 
}

#edit: Hätte nicht telefonieren sollen - zu langsam...
 
S

SlaterB

Gast
nicht da, sondern bei

if (Maler.equals(BerufsGruppe)){

aber stimmt, Spalte 'berufsgruppe' ist gemeint,

ich vermute jedenfalls den Fehler bei Maler.equals(BerufsGruppe) ;)
 

The_S

Top Contributor
@x.l hat gesagt.:
War nur ne Idee... ich hol mir die Werte immer über den Index.

Woah, wie hässlich ist das denn? Das hat ma n Kollege hier gemacht, dem hab ich das gaaaaaaaaaanz schnell wieder abgewöhnt. Wenn du mal n SQL hast, bei dem mehr als 40 Spalten zurück kommen, verliert nan (vorallem bei späteren Erweiterungen) ziemlich schnell den Überblick wo denn jetzt was ist. ;)
 

msd

Mitglied
Hallo zusammen,

ich kanns wiedermal kaum glauben, woran es gelegen. JDBC lieferte für jede Berufsgruppe immer das richtige Ergebnis. Allerdings ist die Spalte Berufsgruppe mit char(12) in der Datenbank erstellt worden. Deshalb wurden die restlichen Zeichen (MALER*******) mit Leerzeichen* zurückgeliefert und ein "equals" lieferte natürlich immer "false". Und ich dachte die ganze Zeit ich befinde mich in einer anderen Java Dimension. Danke für eure Hilfe.

Gruß
Markus
 

@x.l

Bekanntes Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
Wenn du mal n SQL hast, bei dem mehr als 40 Spalten zurück kommen, verliert nan (vorallem bei späteren Erweiterungen) ziemlich schnell den Überblick wo denn jetzt was ist.
Okay, überzeugt.... :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Datenbankprogrammierung mit JComboBox Datenbankprogrammierung 2
D Problem mit jComboBox Datenbankprogrammierung 4
W JComboBox mit Access DB Werten füllen Datenbankprogrammierung 5
C Datensätze in einer JComboBox auflisten Datenbankprogrammierung 2
G JComboBox füllen Datenbankprogrammierung 4
Z SQL Ergebnis in Integer Wert abspeichern Datenbankprogrammierung 3
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
D MySQL mehrzeiliges Ergebnis Durchschnittswerteberechnung Datenbankprogrammierung 2
D Oracle SQL Ergebnis anzeigen und Applet Fehlermeldung Datenbankprogrammierung 12
I SQL_Abfrage-Ergebnis (ResultSet) in String[] speichern Datenbankprogrammierung 29
G PostGreSQL - Die Abfrage lieferte kein Ergebnis Datenbankprogrammierung 3
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
K Ergebnis aus SQL Abfrage in Array speichern Datenbankprogrammierung 3
V 3x selbes Ergebnis trotz 3x verschiedene Ergebnisse? Datenbankprogrammierung 2
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
M Derby/JavaDB Datenbank füllen Datenbankprogrammierung 7
U Dom Parser und SQLite füllen Datenbankprogrammierung 5
L Tabelle mit Inhalt füllen Datenbankprogrammierung 2
G ArrayList aus Verschiedenen klasse füllen Datenbankprogrammierung 5
C datenbank füllen Datenbankprogrammierung 4
D von Datenbank in JTable füllen Datenbankprogrammierung 16
M DropDownBoxen mit MySQL Daten füllen Datenbankprogrammierung 3
D Vector mit Daten aus der Datenbank füllen Datenbankprogrammierung 7
M MySQL: Spalte auf einmal füllen, ohne iterieren zu müssen Datenbankprogrammierung 4
A Textfelder füllen Datenbankprogrammierung 4
D Daten von Datenbank in JTable füllen... Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben