Oracle Datenbankselektion

CrackerJack

Mitglied
Hallo Cracks,

ich hätte mal gern ein Problem. Wir basteln gerade in der Schule ein Customer Relationship Management System. Dabei habe ich ein Fenster im Null-Layout mit den verschiedenen JTextFields (z.B. Firma, Name, Vorname usw.). Ich möchte nun in einer Datenbankabfrage nach bestimmten Feldinhalten suchen. Wenn ich bei Firma "Mic" eingebe sollen mir alle Einträge anzeigen die mit "Mic" beginnen.

Das Auslesen der Daten erfolgt über einen Vector:
Java:
Vector<Vector> tabelle_kunde = DBschreiben.vector_lesen("select Firma, Anrede, Name, Vorname, Abteilung, Strasse, Hausnr, Postleitzahl, Ort, Postfach from kunde where kundekid = 50");

Allerdings haben wir den Kunden noch über den Primärschlüssel kundekid fest eincodiert. Irgendwie müsste der Suchstring per getText() aus dem JTextField rausgezogen werden, oder? Allerdings kriegen mein Kollege und ich den Code dazu nicht hin :(

Falls ihr noch weitere Informationen braucht dann einfach fragen

Wäre super wenn uns jemand helfen könnte. :toll:

Besten Dank im Voraus!

Gruß,

Mark


P.S. vielleicht kommt ja jemand aus Paderborn oder Umgebung der live helfen kann :D
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Java:
String such = textField.getText();
"select x from y where name like '"+such+"%'; "
 

CrackerJack

Mitglied
Oh ja super, das geht schon mal wenn ich nur einen Suchstring abfrage.

Ich hab das jetzt mal mit mehreren Suchstrings geschrieben

Java:
String such1 = frame.tf_firma.getText();
            String such2 = frame.tf_name.getText();
            String such3 = frame.tf_vorname.getText();
            Vector<Vector> tabelle_kunde = DBschreiben.vector_lesen("select Firma, Anrede, Name, Vorname, Abteilung, Strasse, Hausnr, Postleitzahl, Ort, Postfach from kunde where firma like '"+such1+"%' or name like '"+such2+"%' or vorname like '"+such3+"%'");

Jetzt bekomme ich allerdings sämtliche Datensätze angezeigt
 
S

SlaterB

Gast
wie sind denn die drei Einzelergebnisse,
wenn die erste Suche Eintrag 1-4 liefert, die nächste 2-7 und letzte 5-12, dann hast du insgesamt alle 1-12 Einträge,
keine Magie

statt OR gibts auch noch AND..?
 
S

SlaterB

Gast
was soll ich sagen, SQL ist einfach, SQL funktioniert,

mit OR stellst du mehrere Bedingungen zur Auswahl, jedes Ergebnis der Query wird eine davon mindestens erfüllen, teste alle einzeln, es gibt keine Rätsel,
mit AND kannst du das machen was AND eben macht, dürfte doch klar sein

ich sehe keine Frage bzw. kann ohne Datenlage + Inhalt deiner Textfelder nicht beurteilen, was rauskommt
 

CrackerJack

Mitglied
Die Zusammenhänge sind hier doch etwas komplizierter. Es ist so, dass ich mehrere Tabellen verknüpfe. Kunde, Email und Telefon, welche über einen Schlüssel "kundekid" verbunden sind. Ich muss also so abfragen, dass mir die zusammengehörenden Daten von allen Tabellen in die Textfelder geschrieben werden. Momentan schaut es folgendermaßen aus:

Java:
//Aktualisieren Button    
        if (e.getSource() == frame.b_aktualisieren)
        {
            String such1 = frame.tf_firma.getText();
            String such2 = frame.tf_name.getText();
            String such3 = frame.tf_vorname.getText();
            Vector<Vector> tabelle_kunde = DBschreiben.vector_lesen("select Firma, Anrede, Name, Vorname, Abteilung, Strasse, Hausnr, Postleitzahl, Ort, Postfach from kunde where firma like '"+such1+"%' and name like '"+such2+"%' and vorname like '"+such3+"%'");
//            Vector<Vector> tabelle_kunde = DBschreiben.vector_lesen("select kid, Firma, Anrede, Name, Vorname, Abteilung, Strasse, Hausnr, Postleitzahl, Ort, Postfach from kunde where firma like '"+such1+"%'");
            Vector<Vector> tabelle_telefon = DBschreiben.vector_lesen("select kundekid, tel_priv, tel_gesch, mobil, fax from telefon where kundekid = 69");
            Vector<Vector> tabelle_email = DBschreiben.vector_lesen("select kundekid, email_priv, email_gesch, homepage from email where kundekid = 69");
            
            for (int i = 1; i < frame.string_Array.length; i++) 
            {
                if (i < 11)
                {
                frame.string_Array[i] = tabelle_kunde.elementAt(0).elementAt(i).toString();
                }else if(i < 15)
                {
                    frame.string_Array[i] = tabelle_telefon.elementAt(0).elementAt(i-11).toString();
                }else if(i < 18)
                {
                    frame.string_Array[i] = tabelle_email.elementAt(0).elementAt(i-15).toString();
                }else 
                    {
                    frame.string_Array[i] = "";
                    }
                System.out.println(frame.string_Array[i]);
                if (i-1 < frame.tf_array.length)
                    
                    {
                    frame.tf_array[i-1].setText(frame.string_Array[i]);
                    }
            }
        }

Das ist der Teil aus der Aktionsklasse, die Textfelder stehen in der Komponentenklasse, welche auch die Main-Methode enthält. Die sind über ActionListener miteinander verbunden. D.h. wenn ich auf den Aktualisieren-Button drücke soll er mir den ausgewählten Datensatz anzeigen.

Momentan sind folgende Datensätze vorhanden:

68 Microsoft Herr Gates Bill Chefabteilung Gatesstrasse 22 12345 USA 1234
69 Bertelsmann Frau Mohn Liz Ganzoben Bertelsmannstraße 12 44444 Gütersloh 44
 

Neue Themen


Oben