Java einzelne Werte aus MySQL Datenbank auslesen

bennemann8

Cadet 2nd Year
Registriert
Okt. 2010
Beiträge
21
Hey Leute..

kann man einzelne Werte aus einer MySQL DB auslesen?
Finde leider nichts im Netz.

Ich habe ein GUI geschrieben, mit dem man Daten wie Name,Geb.,Straße usw. eingeben kann,
die dann in der Datenbank gesucht werden.

Quellcode meiner Methode zum Suchen: - Das übergebene Array beinhaltet die eingegebenen Daten (z.B. arr[0] = name)
Code:
  public void connectionSuchen(String[] arr){
       try{
           con = DriverManager.getConnection("jdbc:mysql://localhost/java" , "root", "");
           stmt = con.createStatement();
           // Der Teil mit dem "WHERE " + "name = '"...." klappt irgendwie nicht...
           rs = stmt.executeQuery("SELECT * FROM mitglieder WHERE " + "name = '" + arr[0] + "' AND geb = '" + arr[1] + "'");
           while(rs.next()){
               String wert ="Name: " + rs.getString("name") + "\n";
               wert += "Geburtstag: " + rs.getString("geb") + "\n";
               wert += "Telefonnummer: " + rs.getString("telefon") + "\n";
               wert += "Straße: " + rs.getString("Straße") + "\n";
               wert += "Hausnummer: " + rs.getString("Hausnummer") + "\n";
               wert += "PLZ: " + rs.getString("PLZ") + "\n";
               wert += "Ort: " + rs.getString("Ort") + "\n";
               wert += "Handy: " + rs.getString("Mobil") + "\n";
               wert += "E-Mail: " + rs.getString("E-Mail") + "\n";
               wert += "Mitgliedschaft: " + rs.getString("Mitgliedschaft") + "\n";
               wert += "Mitglied \"Auf Schalke\": " + rs.getString("Mitglied Auf Schalke") + "\n";
               wert += "Mitgliedsnummer: " + rs.getString("Mitgliedsnummer") + "\n";
               wert += "Dauerkarte: " + rs.getString("Dauerkarte") + "\n";
               wert += "Typ der Dauerkarte: " + rs.getString("Typ der Dauerkarte") + "\n";
               JOptionPane.showMessageDialog(panel, wert);               
           }
           label4.setText("Mitglied(er) gefunden.");
           con.close();
       }catch(SQLException e){
           label4.setText("Mitglied konnte nicht gefunden werden");
       }
   }


gibts auch eine Möglichkeit mehrere Daten in einem JOptionPane auszugeben, wenn z.B. mehrer Personen gefunden werden, die den gleichen Namen und bspw. die gleiche Adresse haben?
Bei wird das nämlich immer hintereinander angezeigt - Erst eine Reihe von Datensätzen, dann die nächste - in einem neuen JOptionPane...

Jetzt schon einmal Danke an Euch ;)


Edit 1:
wenn ich den Teil rausnehme mit dem "WHERE " + "name = '" + arr[0] + "' AND...."
dann klappt alles, wie es soll -.-

Edit 2:
Inhalt der Datenbank:
DB Name: java
Tabellenname: mitglieder

Inhalt der Tabelle mitglieder:

name geb telefon Mobil E-Mail Straße Hausnummer PLZ Ort Mitgliedschaft Mitglied Auf Schalke Mitgliedsnummer Dauerkarte Typ der Dauerkarte

name1person - 11.11.1999 - 02220/73368 - 01221585668 -....
 
Zuletzt bearbeitet:
was mir direkt mal auffällt, in der 6. Zeile fehlt nen +" ' " hinter '" + arr[0], daher kann er das nicht als String erkennen :)

Wenn es mehrer Daten gibt würde ich die einfach in einem Grid anzeigen, wäre doch viel übersichtlicher?
 
Zuletzt bearbeitet:
Tidusmaster schrieb:
was mir direkt mal auffällt, in der 6. Zeile fehlt nen +" ' " hinter '" + arr[0], daher kann er das nicht als String erkennen :)

da steht doch:
Code:
"name = '" + arr[0] + "' AND geb = '" + arr[1] + "'");

das heißt doch der setzt arr[0] mit ' ' in einen String.. - oder nicht? :confused_alt:
 
Ups, man sollte natürlich auch horizontal scrollen :D
Ja, dass dürfte so stimmen.

Sicher, das die "mitglieder" Tabelle klein geschrieben wird? Normal sind Tabellennamen immer groß.

Ich würde vielleicht auch einen einzelnen Eintrag in einem Grid anzeigen, mehrere wären dann halt auch kein Problem.
 
Zuletzt bearbeitet:
Mit "\n" kannst du in JLabels keinen Zeilenumbruch machen. Das geht entweder mehreren JLabels, mit HTML-Syntax als Text oder mit einer JTextArea.

Das pro Datensatz ein JOptionPane aufgerufen wird, ist nicht verwunderlich, da du es ja innerhalb der Schleife stehen hast. Ein JTable wäre vermutlich besser zur Anzeige mehrerer Datensätze geeignet.
 
bennemann8 schrieb:
gibts auch eine Möglichkeit mehrere Daten in einem JOptionPane auszugeben, wenn z.B. mehrer Personen gefunden werden, die den gleichen Namen und bspw. die gleiche Adresse haben? Bei wird das nämlich immer hintereinander angezeigt - Erst eine Reihe von Datensätzen, dann die nächste - in einem neuen JOptionPane...

Einfach das geeignete Widget auswählen (JTable, JList... wenn es Swing sein muss) und dessen Datenmodell nach der Abfrage entsprechend aktualisieren.
 
Tidusmaster schrieb:
Ups, man sollte natürlich auch horizontal scrollen :D
Ja, dass dürfte so stimmen.

Sicher, das die "mitglieder" Tabelle klein geschrieben wird? Normal sind Tabellennamen immer groß.
ja die Tabelle mitglieder ist kleingeschrieben..;)

Ich würde vielleicht auch einen einzelnen Eintrag in einem Grid anzeigen, mehrere wären dann halt auch kein Problem.
ja das ist ja das Problem..
ich bekomme nicht die Ausgabe die ich haben möchte..
Er soll mir die Datensätze anzeigen, bei denen Der Name und das Geburtsdatum übereinstimmen mit den eingegebenen bzw. übertragenen Daten aus dem Array (arr)
 
Es geht also nicht primär um die Anzeige der Daten sondern dass die Daten, die du von der Datenbank bekommst, nicht deinen Erwartungen entsprechen?
Das Select scheint zumindest in Ordnung zu sein. Ohne die Datenbank und das was du bekommst und erwartest zu kennen, kann man nicht viel machen.
 
Darlis schrieb:
Es geht also nicht primär um die Anzeige der Daten sondern dass die Daten, die du von der Datenbank bekommst, nicht deinen Erwartungen entsprechen?
Das Select scheint zumindest in Ordnung zu sein. Ohne die Datenbank und das was du bekommst und erwartest zu kennen, kann man nicht viel machen.

doch.
Also..
ich bekomme eine Ausgabe aller Daten der Tabelle wenn ich den hinteren Teil der SELECT * FROM.. (WHERE " + "name = '" + arr[0] + "' AND...) weglasse.
Wenn ich ihn aber dazu schreibe bekomm ich einen NullPointerExeption Fehler in der Zeile vom SELECT * FROM..

Ich editier meinen 1. Post mal mit der Tabelle aus der Datenbank.. ;)
 
Dann ist etwas mit deinem Array nicht in Ordnung.
 
Also ich gehe grob gesagt so vor:
1) Zuerst probiere ich direkt den Query mit dem Tool aus, mit dem ich so auf die Datenbank zugreife. Somit stelle ich sicher, dass es funktioniert.
2) Ich bastel den Query in Java zusammen und lasse mir den String ausgeben, um zu vergleichen, ob er genau so aussieht wie er soll und keine Schreibfehler drin sind. Dann sollte es natürlich funktionieren.

Ach so, wegen dem Array wird ne NullPointerExc. geworfen.
Dann lauf doch mal mit dem Debugger durch, was für ein Array übergeben wird, schein ja nichts drin zu stehen.
 
Zuletzt bearbeitet:
Darlis schrieb:
Dann ist etwas mit deinem Array nicht in Ordnung.

wapp,wapp,waaaaahhhhhhhpp.....:lol:

war so intelligent und hab vergessen das Array zu deklarieren. Stand nur in einer anderen Methode aber nicht da wo es sollte xD :stock:
 
Zurück
Oben