TextFeld in Verbindung zur ComboBox automatisch aktualisieren

c-i-k-o

Mitglied
Hallo,

ich habe folgendes Problem, und zwar bin ich gerade dabei eine GUI zu entwickeln, womit ich eine Datenbank verwalten kann, z.b. Name einfügen/löschen.
Jeder Name hat eine auto inkremetierte ID.
Die Namen kann ich durch eine Combobox anzeigen lassen... soweit in Ordnung.

Aber... Neben der ComboBox befindet sich ein TextField, hier soll die zum Namen gehörende ID aus der Datenbank ausgelesen und in das Textfield einfügt werden. Die ID soll sich automatisch ändern, wenn der Name geändert wird

z.B.
ComboBox (name) TextField (ID)
Mustermann, Max 12

Ich hatte mir sowas in der Richtung überlegt,
Java:
.
.
.
JTextField txfeld = new JTextField(4);
.
.
.

String SQLabfr = "select id, vorname from ma where name = '"+name+"' and vorname = '"+vorname+"'";                   
Sql.execute(SQLabfr);
String qqq = SQLabfr.toString();
txfeld = new JTextField(qqq)

leider klappt es nicht 🙁
 
Ich würde in die Combobox direkt "Person" Objekte legen. Dann fügst du nen ItemListener hinzu und aktualisierst das Textfield sobald sich der Eintrag ändert. Über das selectedItem kommst du dann an das Person Objekt und kannst dir darüber die Id holen.
 
Java:
String SQLabfr = "select id, vorname from ma where name = '"+name+"' and vorname = '"+vorname+"'";                   
Sql.execute(SQLabfr);
String qqq = SQLabfr.toString();
txfeld = new JTextField(qqq)

leider klappt es nicht 🙁
Das ist ja auch Schmarrn SQLabfr ist bereits ein String und enthält die Select Abfrage. Was soll der im Textfeld? Abgesehen davon enthält der Code enthält keine ComboBox...

Ganz grob:
- ActionListener an ComboBox
- darin die selektierten Werte abfragen
- die passende ID von der Datenbank abfragen - alternativ kann man die Daten, wenn es nicht zu viele sind, im Programm halten
- die ID per setText(String) ins Textfeld übergeben - bitte nicht jedes Mal ein neues Textfeld erzeugen. Man schmeißt ja auch nicht bei jedem neuen Film den Fernseher weg.
 
Mach dir am besten ne Wrapperklasse "Person" , die Name Vorname und ID halten kann.
Davon dann ein Datenmodel für die Combobox und dein Textfeld. ... fertsch.

Gruß Vanny
 
Man schmeißt ja auch nicht bei jedem neuen Film den Fernseher weg. -> Gute Idee für die Content- und Elektroindutrie. Man kauft keine DVD, sondern ein Fernseher mit einem Film. Ist dann gaaaanz sicher
 
Vielen Dank an Alle für die super schnellen Antworten.

Das ist ja auch Schmarrn SQLabfr ist bereits ein String und enthält die Select Abfrage. Was soll der im Textfeld? Abgesehen davon enthält der Code enthält keine ComboBox...

Ganz grob:
- ActionListener an ComboBox
- darin die selektierten Werte abfragen
- die passende ID von der Datenbank abfragen - alternativ kann man die Daten, wenn es nicht zu viele sind, im Programm halten
- die ID per setText(String) ins Textfeld übergeben - bitte nicht jedes Mal ein neues Textfeld erzeugen. Man schmeißt ja auch nicht bei jedem neuen Film den Fernseher weg.

ich denke ich habe mein Code zu kurz hier eingefügt,

Hier mein richtiger Code (der ja noch nicht richtig funktioniert)
Java:
JLabel lData1  = new JLabel("ID");
    JTextField txFeld = new JTextField(4);

String[] personen = .............  //holt Daten aus der Datenbank z.b.:  Mustermann, Max
final JComboBox combo = new JComboBox(personen);

        combo.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent evt)
                {
                    String combocontains= combo.getSelectedItem().toString();            //Inhalt aus der ComboBox auslesen
                    String [] splitter = combocontains.split("\\, ");                                 //Inhalt bei "," Splitten
                    String vorname = splitter[0];
                    String name = splitter[1]; 

                    String id = "select id from person where vorname = '"+vorname+"' and name ='"+name+"'";
                    sql.execute(id);                                   //Verbindung zur Klasse sql um die Abfrage durchzuführen
  
                    txFeld.setText(id);              

                }
            });

Ja... in dem Textfeld wird jetzt logischerweise String id = "select id from person where vorname = '"+vorname+"' and name ='"+name+"'"; ausgegeben....
wie kann ich denn jetzt nur die ID im txFeld anzeigen lassen.

Da ich noch sehr frisch mit Java unterwegs bin, weiss ich leider noch nicht so ganz wie ich das Problem von der Welt schaffen soll 🙁
 
Ja... in dem Textfeld wird jetzt logischerweise String id = "select id from person where vorname = '"+vorname+"' and name ='"+name+"'"; ausgegeben....
wie kann ich denn jetzt nur die ID im txFeld anzeigen lassen.
Heißt das, das eigentliche Problem ist nicht das Textfeld zu aktualisieren, sondern die Datenbank abzufragen?

Sofern Du kein Framework verwendest, kann man das Mittels Connection, (Prepared)Stament, ResultSet realisieren.
 
Mir ist ein Denkfehler unterlaufen habe ich nach langen Versuchungen bemerkt 🙁

ich hatte ja am Anfang
Java:
String id = "select id from person where vorname = '"+vorname+"' and name ='"+name+"'";
                    sql.execute(id);                                   //Verbindung zur Klasse sql um die Abfrage durchzuführen
  
                    txFeld.setText(id);

und musste eigentlich

Java:
String id = "select id from person where vorname = '"+vorname+"' and name ='"+name+"'";
                    txFeld.setText(sql.execute(id));
codieren....

Weil im ersten fall ja einfach nur der String übernommen wird und nicht das was "executet" wurde,
aber natürlich muss in das TextFeld das Ergebnis der ausgeführten Abfrage rein...

Trotzdem... nochmals Vielen Dank an Alle
 

Neue Themen


Zurück
Oben