MySQL Adressbuch Suchfunktion

BigMac

Mitglied
Hallo,
ich versuche eine GUI für ein Adressbuch zu schreiben und krieg die such funktion nicht hin.
GUI mit WindowBuilder plugin erstellt.
das ganze läuft soweit ich kann speichern und updaten, aber ich will die JTextField mit den Daten der datenbank füllen.
Java:
package adressbuch;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.UIManager;
import javax.swing.JTextField;
import javax.swing.JSeparator;
import javax.swing.JButton;
import javax.swing.JTable;
import java.sql.*;


public class AdressBuch extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6950577656155165307L;
	private JFrame frmAdressbuch;
	private JTextField nameField;
	private JTextField vnameField;
	private JTextField knrField;
	private JTextField strField;
	private JTextField nrField;
	private JTextField plzField;
	private JTextField stdField;
	private JTextField telField;
	private JTextField mailField;
	private JTable table;
	private static Statement stmt;
	static String sp;
	static String ae;
	static String su;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					AdressBuch window = new AdressBuch();
					window.frmAdressbuch.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		String user = "root";
		String pw = "";
		String url = "jdbc:mysql://localhost/adressen";


		Class.forName("com.mysql.jdbc.Driver");		
		
		Connection  con = DriverManager.getConnection(url,user,pw);

		stmt = con.createStatement();

		new AdressBuch();
		

		System.out.println("Gui läuft");
	}


	/**
	 * Initialize the contents of the frame.
	 * @ 
	 */
	public  AdressBuch( ) {
		
		frmAdressbuch = new JFrame();
		frmAdressbuch.setTitle("Adressbuch");
		frmAdressbuch.setBounds(100, 100, 565, 600);
		frmAdressbuch.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmAdressbuch.getContentPane().setLayout(null);
		
		JLabel lblNewLabel = new JLabel("Name");
		lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel.setBounds(10, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("Vorname");
		lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_1.setBounds(210, 20, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_1);
		
		JLabel lblNewLabel_2 = new JLabel("Kundennr.");
		lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_2.setBounds(10, 60, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_2);
		
		JLabel lblNewLabel_3 = new JLabel("Strasse");
		lblNewLabel_3.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_3.setBounds(10, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_3);
		
		JLabel lblNewLabel_4 = new JLabel("Nr.");
		lblNewLabel_4.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_4.setBounds(210, 100, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_4);
		
		JLabel lblNewLabel_5 = new JLabel("PLZ");
		lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_5.setBounds(10, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_5);
		
		JLabel lblNewLabel_6 = new JLabel("Stadt");
		lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_6.setBounds(210, 140, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_6);
		
		JLabel lblNewLabel_7 = new JLabel("Telefon");
		lblNewLabel_7.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_7.setBounds(10, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_7);
		
		JLabel lblNewLabel_8 = new JLabel("E-Mail");
		lblNewLabel_8.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblNewLabel_8.setBounds(210, 180, 70, 20);
		frmAdressbuch.getContentPane().add(lblNewLabel_8);
		
		nameField = new JTextField();
		nameField.setBounds(90, 20, 100, 20);
		frmAdressbuch.getContentPane().add(nameField);
		nameField.setColumns(10);
		
		vnameField = new JTextField();
		vnameField.setBounds(290, 20, 100, 20);
		frmAdressbuch.getContentPane().add(vnameField);
		vnameField.setColumns(10);
		
		knrField = new JTextField();
		knrField.setBounds(90, 60, 100, 20);
		frmAdressbuch.getContentPane().add(knrField);
		knrField.setColumns(10);
		
		strField = new JTextField();
		strField.setBounds(90, 100, 100, 20);
		frmAdressbuch.getContentPane().add(strField);
		strField.setColumns(10);
		
		nrField = new JTextField();
		nrField.setBounds(290, 100, 40, 20);
		frmAdressbuch.getContentPane().add(nrField);
		nrField.setColumns(10);
		
		plzField = new JTextField();
		plzField.setBounds(90, 140, 100, 20);
		frmAdressbuch.getContentPane().add(plzField);
		plzField.setColumns(10);
		
		stdField = new JTextField();
		stdField.setBounds(290, 140, 100, 20);
		frmAdressbuch.getContentPane().add(stdField);
		stdField.setColumns(10);
		
		telField = new JTextField();
		telField.setBounds(90, 180, 100, 20);
		frmAdressbuch.getContentPane().add(telField);
		telField.setColumns(10);
		
		mailField = new JTextField();
		mailField.setBounds(290, 180, 100, 20);
		frmAdressbuch.getContentPane().add(mailField);
		mailField.setColumns(10);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(10, 220, 530, 20);
		frmAdressbuch.getContentPane().add(separator);
		
		JButton btnSpeichern = new JButton("Speichern");
		btnSpeichern.setBounds(445, 40, 95, 20);
		btnSpeichern.addActionListener(new ActionListener() {



			@Override
			public void actionPerformed(ActionEvent e) {



				sp = "INSERT INTO adressen (knr,name,vname,str,nr,plz,std,tel,mail) VALUES ('"

	       
	        + knrField.getText() 
	        + "','"  
	        + nameField.getText() 
	        + "','" 
	        + vnameField.getText() 
	        + "','" 
	        + strField.getText()
	        + "','" 
	        + nrField.getText()
	        + "','" 
	    	+ plzField.getText()
	    	+ "','" 
	        + stdField.getText()
	        + "','" 
	        + telField.getText()
	        + "','" 
	        + mailField.getText()
	        + "')"; 
				System.out.println(""+sp);
				try {
					int rs = stmt.executeUpdate(sp);
					
					System.out.println(""+rs);
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}
				
				
			}


		});
		frmAdressbuch.getContentPane().add(btnSpeichern);
		
		JButton btnAendern = new JButton("\u00C4ndern");
		btnAendern.setBounds(445, 100, 95, 20);
		btnAendern.addActionListener(new ActionListener() {



			@Override
			public void actionPerformed(ActionEvent e) {



				ae = "UPDATE adressen SET name ='"
	       
	        
	        + nameField.getText() 
	        + "', vname ='" 
	        + vnameField.getText() 
	        + "', str ='" 
	        + strField.getText()
	        + "', nr ='" 
	        + nrField.getText()
	        + "', plz ='" 
	    	+ plzField.getText()
	    	+ "', std ='" 
	        + stdField.getText()
	        + "', tel ='" 
	        + telField.getText()
	        + "', mail ='" 
	        + mailField.getText()
	        + "' WHERE knr ='"
	        + knrField.getText()
	        + "';";
	         
				System.out.println(""+ae);
				try {
					int rs = stmt.executeUpdate(ae);
					
					System.out.println(""+rs);
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}
				
				
			}


		});
		frmAdressbuch.getContentPane().add(btnAendern);
		
		JButton btnSuchen = new JButton("Suchen");
		btnSuchen.setBounds(445, 160, 95, 20);
		btnSuchen.addActionListener(new ActionListener() {



			@Override
			public void actionPerformed(ActionEvent e) {


                               
				su = "SELECT*FROM adressen WHERE knr='"

	       
	        + knrField.getText() 
	        + "';";
                             // hier will ich die Textfelder mit dem inhalt der Datebank füllen
				nameField.setText();
	        
				System.out.println(""+su);
				try {
					ResultSet rs = stmt.executeQuery(su);
					
					System.out.println(""+rs);
					
				} catch (Exception ex) {
					ex.printStackTrace();
				}
				
				
			}


		});
		frmAdressbuch.getContentPane().add(btnSuchen);
		
		table = new JTable();
		table.setBounds(10, 250, 530, 300);
		
		frmAdressbuch.getContentPane().add(table);
	}
}

ps. Möglicherweise gehört das in die GUI abteilung
 
S

SlaterB

Gast
was ist deine Frage?
hole die Daten aus dem ResultSet, die Reihenfolge der Spalten kennst du ja, in den Textfeldern setText() aufrufen

nicht vergessen erst next() aufzurufen, mehr als ein Ergebnis wäre ungünstig, an 0 Ergebnisse denken usw.,
Arbeit über Arbeit, sollte nicht schwer sein nachdem was du alles schon hast,

was ist die Frage dabei außer jeder Codezeile einzeln?
 

BigMac

Mitglied
Danke für die antwort.
Ich weiß nur nicht wie man die daten aus ResultSet holt und sie dann in setText einspeiße.
Brauch ich da einen String?
und ist das nameField.setText and der richtigen stelle im code?
 
S

SlaterB

Gast
man kann der Reihe nach, Index 1, 2, 3 oder mit bekannten Spaltennamen Daten herausholen,
aber das ist so ein Grundlagenthema, gib einfach 'resultset example' in eine Suchmaschine ein, 'java' gar nicht mal nötig,
und lerne zunächst von hervorragenden Seiten a la
Getting Data from a Result Set | Example Depot

im Übrigen hättest du dann auf deine 320 Zeilen Code weitgehend verzichten können, GUI muss zunächst auch nicht unbedingt dabei sein,
die Frage ist doch schlicht 'wie kann ich die Daten zu folgender Query aus einer Tabelle mit diesen Spalten .. auslesen' ;)
 

Ähnliche Java Themen

Neue Themen


Oben