# Abfrage-Ergebnisse in einem Fenster darstellen



## Mrtwomoon (8. Jun 2012)

Hello zusammen,
ich bin Anfänger mit Java deshalb entschuldigen mich wegen dumme Fragen... 
Ich möchte folgendes machen:
1-) DB verbinden (gemacht)
2-) mit GUI ein Fenster machen (gemacht)
3-) im Fenster name eingeben und diese in DB suchen wenn existiert dann in ein Feld ausgeben!!!
   hier wenn ich eine Name eingebe und wenn diese Name existiert (egal ein oder mehrere Einträge existiert gibt nur eine davon aus.)
??? Ich will aber alle Einträge ausgeben, die dieselbe Name haben??? 

da unten steht mein Code   ich bedanke mich für Hilfe



```
package de.degan.mysql;

import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

public class SuchInDB extends JFrame {
	JTextField 	person_suchen;
	JButton     suchen_button;
	JLabel      suche_nach;
	JTextField  ergebnis_feld;
	/*-----------  DB Variablen --------------*/
	private static Connection conn = null;
	// Hostname
    private static String dbHost = "127.0.0.1";
    // Port -- Standard: 3306
    private static String dbPort = "3306";
    // Datenbankname
    private static String database = "person";
    // Datenbankuser
    private static String dbUser = "root";
    // Datenbankpasswort
    private static String dbPassword = "java";
    

	public SuchInDB(){
		this.getContentPane().setLayout(null);

		this.initWindow();
		
		try {		 
            // Datenbanktreiber für ODBC Schnittstellen laden.
            Class.forName("com.mysql.jdbc.Driver");
 
            // Verbindung zur ODBC-Datenbank 'person' herstellen.
            conn = DriverManager.getConnection("jdbc:mysql://"+dbHost+":"+dbPort+"/"
                                                              +database+"?"+"user="+dbUser+"&"
            		                                          +"password="+dbPassword);
        } catch (ClassNotFoundException e) {
            System.out.println("Treiber nicht gefunden");
        } catch (SQLException e) {
            System.out.println("Connect nicht moeglich");
        }
	}
	
	private static Connection getInstance()
    {
        if(conn == null)
            new SuchInDB();
        return conn;
    }
	
	protected void initWindow() {
	    //elemente instanzieren 
	    person_suchen = new JTextField();
	    suchen_button = new JButton("Suchen");
	    suche_nach    = new JLabel("suche nach:");
	    ergebnis_feld = new JTextField();
	    
	    // Position festlegen in Layout
	    suche_nach.setBounds(5, 10, 100, 20);
	    person_suchen.setBounds(100, 10, 300, 20);
	    suchen_button.setBounds(410, 10, 90, 20);
	    ergebnis_feld.setBounds(5, 40, 535, 245);
	    
	    // in Layout hinzufügen
	    this.getContentPane().add(person_suchen);
	    this.getContentPane().add(suchen_button);
	    this.getContentPane().add(suche_nach);
	    this.getContentPane().add(ergebnis_feld);
	    
	    
	    // button suchen Der ActionListener ist dafür zuständig sog. ActionEvents zu empfangen
	    suchen_button.addActionListener(new ActionListener(){
	    	
	    	public void actionPerformed (ActionEvent arg0){
	    		buttonBerechneClicked();
	    	}
	    });
	    
	    
	}
	public void buttonBerechneClicked(){
		conn = getInstance();
		// Anfrage-Statement erzeugen.
		Statement query;
		try {
            query = conn.createStatement();
            
		    String name =person_suchen.getText();
		    String sql ="SELECT * FROM student WHERE Vorname = '"+name + "' OR Nachname='"+name+"'";
		    
		    ResultSet result= query.executeQuery(sql);
		//    if (result==null){                       //TODO: gib aus wenn keinen Eintrag trifft
		 //   	ergebnis_feld.setText("diese Eintrag existiert in DB nicht...");
		  //  }else{
		    while (result.next()) {
              String first_name = result.getString("Vorname"); // Alternativ: result.getString(1);
              String last_name  = result.getString("Nachname"); // Alternativ: result.getString(2);
              String name_result = last_name + ", " + first_name;
            //  schreibInErgebnis(name);
		        ergebnis_feld.setText(name_result); 
            }
		   // } //else 
		} catch (SQLException e) {
            e.printStackTrace();
        }
		 
	}
	
	/*public void schreibInErgebnis(String text){		
           // System.out.println(name);
           ergebnis_feld.setText(text); 
	}*/
	
}
```


----------



## Final_Striker (8. Jun 2012)

Wenn du alle Einträge anzeigen willst, dann solltest du statt eines Textfeldes eine Textarea verwenden.


----------



## Mrtwomoon (8. Jun 2012)

erst danke für das schnellere Antwort
das habe ich jetzt gemacht aber immer noch ist gleich

JTextArea  ergebnis_feld;
ergebnis_feld = new JTextArea();


----------



## Final_Striker (8. Jun 2012)

JTextArea#append(String str)

JTextArea (Java 2 Platform SE v1.4.2)


----------



## PaP (10. Jun 2012)

Mit ergebnis_feld.setText(name_result) überschreibst du ja den vorherigen Eintrag.
Versuch statt dessen mal das hier ergebnis_feld.setText(name_result+", "+ergebnis_feld.getText());


----------



## Mrtwomoon (14. Jun 2012)

sory! dass ich nicht antworten könnte 

danke für die Antworten... :toll:

jetzt muss ich aber vorherige Suchergebnisse löschen  können, da die neue Ergebnisse unter den alten hinzugefügt werden... :noe:
also ich will nach jeder neuen Suche in der Feld nur die aktuelle Ergebnisse haben... 
was soll ich jetzt machen?


----------



## Fab1 (14. Jun 2012)

Du nutzt ja ein JTextArea so wie ich das mitbekommen habe oder?

Und du speicherst den Inhalt in einer Variablen, die ständig erweitert wird.

Nun da kannst du einfach in den Listener von deinem suchen Button den Inhalt von dem String  auf "" setzen.


----------



## Mrtwomoon (14. Jun 2012)

ich leider nicht verstanden was ich machen soll 
kannst du bitte mir noch detailliert sagen...


----------



## Fab1 (14. Jun 2012)

Du machst ja sowas in der Art hier:


```
ergebnis_feld.setText(name_result);
```

Und wenn du nun die Variable 
	
	
	
	





```
name_result
```
 leerst.


```
name_result = "";

// Variable wieder übergeben.

ergebnis_feld.setText(name_result);
```

Dann hast du wieder ein leeres TextArea.


----------

