MySQL Datenbankabfrage mit Eingabe aus Textfeld vergleichen

Hallo zusammen,
ich programmiere momentan einen Vokabeltrainer mit Java.
Der Benutzer kann bis jetzt, mit Hilfe eines Textfeldes, Vokabeln eingeben und diese werden in der Datenbank gespeichert.
Nun hab ich 2 Probleme:
1. Bei Abfrage der Vokabeln aus der Datenbank, zeigt das Textfeld nur die zuletzt eingegebene Vokabel an. Wie schaff ich es, dass jeweils zufällig eine Vokabel aus der Datenbank angezeigt wird?
Und das ist die Hauptfrage:
2. Wie schaffe ich es, dass die aus der Datenbank entnommene englische Vokabel mit der im anderen Textfeld eingegebenen deutschen Vokabel verglichen wird?
Ich bin dankbar für jede Hilfe :)
Hier mein Code:

Java:
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Vokabeltrainer implements ActionListener {

    JFrame jf1;
    JFrame jf2;
    JFrame jf3;
    JTextField tf1;
    JTextField tf2;
    JTextField tf3;
    JTextField tf4;
    JTextField tf5;
    JTextField tf6;
    JButton b1;
    JButton b2;
    JButton b3;
    JButton b4;
    JButton b5;
    JButton b6;
    JLabel jl1;
    JLabel jl2;
    JLabel jl3;
    Statement stmt;
    String evokabel;
    ResultSet rs;

    public static void main(String[] args) {
        new Vokabeltrainer();
    }

    public Vokabeltrainer(){

//Startfenster      
      
        jf1 = new JFrame();
        jf1.setSize(1000, 800);
        jf1.setLayout(null);
        jf1.setResizable(false);
        jf1.setTitle("Vokabeltrainer");
        jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
        tf1 = new JTextField();
        tf1.setBounds(200, 150, 600, 100);
        tf1.setText("Wilkommen! Was möchtest du tun?");
        Font font1 = new Font("SansSerif", Font.BOLD, 28);
        tf1.setFont(font1);
        tf1.setHorizontalAlignment(JTextField.CENTER);
        tf1.setEditable(false);
        jf1.add(tf1);
      
        b1 = new JButton();
        b1.setBounds(150, 400, 200, 100);
        b1.setText("Trainieren!");
        b1.addActionListener(this);
        b1.setEnabled(true);
        jf1.add(b1);
      
        b2= new JButton();
        b2.setBounds(650,400,200,100);
        b2.setText("Neue Vokabeln Hinzufügen");
        b2.addActionListener(this);
        b2.setEnabled(true);
        jf1.add(b2);
      
//Fenster zum Abfragen der Vokabeln  

        jf2 = new JFrame();
        jf2.setSize(600,400);
        jf2.setLayout(null);
        jf2.setVisible(false);
        jf2.setTitle("Lass uns trainieren!");
        jf2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
        jl3 = new JLabel();
        jl3.setBounds(180,50,200,50);
        jl3.setText("Übersetze folgende Vokabel:");
        jf2.add(jl3);
      
//Textfeld zum Anzeigen der Vokabel aus der Datenbank      
      
        tf5 = new JTextField();
        tf5.setBounds(180, 100, 200, 50);
        tf5.setEditable(false);
        tf5.setText("");
        jf2.add(tf5);
      
//Textfeld zum Eingeben der Übersetzung      
      
        tf6 = new JTextField();
        tf6.setBounds(180, 200, 200, 50);
        tf6.setEditable(true);
        jf2.add(tf6);

        b5 = new JButton();
        b5.setBounds(180,280,80,50);
        b5.setText("Prüfen");
        b5.addActionListener(this);
        jf2.add(b5);
      
        b6 = new JButton();
        b6.setBounds(300,280,80,50);
        b6.setText("Weiter");
        b6.addActionListener(this);
        jf2.add(b6);
      
//Fenster zum Eingeben der Vokabeln  

        jf3 = new JFrame();
        jf3.setSize(600,400);
        jf3.setLayout(null);
        jf3.setVisible(false);
        jf3.setTitle("Vokabeltrainer");
        jf3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
        jl1 = new JLabel();
        jl1.setBounds(150, 150, 100, 30);
        jl1.setText("Deutsch:");
        jl1.setHorizontalAlignment(JLabel.CENTER);
        jf3.add(jl1);

        tf2 = new JTextField();
        tf2.setBounds(300, 150, 100, 30);
        tf2.setEditable(true);
        jf3.add(tf2);
      
        jl2 = new JLabel();
        jl2.setBounds(150, 200, 100, 30);
        jl2.setText("Englisch:");
        jl2.setHorizontalAlignment(JLabel.CENTER);
        jf3.add(jl2);

        tf3 = new JTextField();
        tf3.setBounds(300, 200, 100, 30);
        tf3.setEditable(true);
        jf3.add(tf3);


        tf4 = new JTextField();
        tf4.setBounds(50, 50, 500, 50);
        tf4.setText("Gebe hier deine Vokabeln ein:");
        Font font2 = new Font("SansSerif", Font.BOLD, 28);
        tf4.setFont(font2);
        tf4.setHorizontalAlignment(JTextField.CENTER);
        tf4.setEditable(false);
        jf3.add(tf4);

        b3 = new JButton();
        b3.setBounds(300,250,150,50);
        b3.setText("Übernehmen");
        b3.addActionListener(this);
        jf3.add(b3);

        b4 = new JButton();
        b4.setBounds(5,5,100,30);
        b4.setText("Zurück");
        b4.addActionListener(this);
        jf3.add(b4);
      
      
        jf1.setVisible(true);
      
        try
        {
            load_con();
        }
        catch(Exception e) { e.printStackTrace(); }
    }
    private void load_con() throws Exception
    {
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost/vokabeln?user=root&password=");
        stmt=con.createStatement();
        try {
            ResultSet rs = stmt.executeQuery("SELECT englisch FROM Vokabelliste");
            while(rs.next()){
            tf5.setText(""+rs.getString("englisch"));  
            }
        } catch (SQLException e) {
            System.out.println("Fehler!");
        }
    }

    public void actionPerformed(ActionEvent a) {
        String cmd = a.getActionCommand();
        if(cmd.equals("Trainieren!")){
            jf1.setVisible(false);
            jf2.setVisible(true);
        }
        if(cmd.equals("Neue Vokabeln Hinzufügen")){
            jf1.setVisible(false);
            jf3.setVisible(true);
        }
        if(cmd.equals("Zurück")){
            jf3.setVisible(false);
            jf1.setVisible(true);
        }
      
//Nach bedienen des Buttons werden deutsche und englische Vokabel in der Datenbank gespeichert      
      
        if(cmd.equals("Übernehmen")){
            String eingabe = tf2.getText();
            tf2.setText("");

            String eingabe1 = tf3.getText();
            tf3.setText("");

            try{
                stmt.executeUpdate("insert into Vokabelliste (deutsch, englisch) value ('"+eingabe+"','"+eingabe1+"')");
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            tf2.setText("");
            tf3.setText("");
          
        }
        if(cmd.equals("Prüfen")){
        }
      
        if(cmd.equals("Weiter")){
            tf5.setText("");
            jf2.repaint();
            jl3.repaint();
          
//Eine englische Vokabel soll aus der Datenbank genommen werden und in Textfeld5 hinzugefügt          
          
            try {
                ResultSet rs = stmt.executeQuery("SELECT englisch FROM Vokabelliste");
                while(rs.next()){
                tf5.setText(""+rs.getString("englisch"));  
                }
            } catch (SQLException e) {
                System.out.println("Fehler!");
            }
        }
    }
}
 
Zuletzt bearbeitet:

thet1983

Top Contributor
angenommen deine Datenbank sieht so aus..
Code:
create table if not exists <schema>.Vokabelliste
(
    v_id int not null,
    englisch varchar(500),
    deutsch varchar(500),
    constraint  pk_vok primary key(v_id)
);
dann könntest du mit `where`wie folgt arbeiten...
Code:
select englisch from Vokabelliste where deutsch=@wort;
 
select englisch from Vokabelliste where deutsch=@wort;
Ich hab es nun so versucht, jedoch funktioniert es noch nicht 100%ig.
Das Programm soll die aus der Datenbank entnommene Vokabel in TextFeld5 mit der eingegebenen Vokabel in TextFeld6 vergleichen. Jedoch hab ich keinen weiteren Ansatz wie ich das umsetzten soll.
Hat jemand einen Vorschlag wie ich das Problem beheben kann?
Hier mein erweiterter Code:
Java:
public class Vokabeltrainer implements ActionListener {

    JFrame jf1;
    JFrame jf2;
    JFrame jf3;
    JTextField tf1;
    JTextField tf2;
    JTextField tf3;
    JTextField tf4;
    JTextField tf5;
    JTextField tf6;
    JButton b1;
    JButton b2;
    JButton b3;
    JButton b4;
    JButton b5;
    JButton b6;
    JLabel jl1;
    JLabel jl2;
    JLabel jl3;
    Statement stmt;
    String evokabel;
    ResultSet rs;
    String englisch;
    String deutsch;
    boolean richtig = false;

    public static void main(String[] args) {
        new Vokabeltrainer();
    }

    public Vokabeltrainer(){

//Startfenster       
       
        jf1 = new JFrame();
        jf1.setSize(1000, 800);
        jf1.setLayout(null);
        jf1.setResizable(false);
        jf1.setTitle("Vokabeltrainer");
        jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        tf1 = new JTextField();
        tf1.setBounds(200, 150, 600, 100);
        tf1.setText("Wilkommen! Was möchtest du tun?");
        Font font1 = new Font("SansSerif", Font.BOLD, 28);
        tf1.setFont(font1);
        tf1.setHorizontalAlignment(JTextField.CENTER);
        tf1.setEditable(false);
        jf1.add(tf1);
       
        b1 = new JButton();
        b1.setBounds(150, 400, 200, 100);
        b1.setText("Trainieren!");
        b1.addActionListener(this);
        b1.setEnabled(true);
        jf1.add(b1);
       
        b2= new JButton();
        b2.setBounds(650,400,200,100);
        b2.setText("Neue Vokabeln Hinzufügen");
        b2.addActionListener(this);
        b2.setEnabled(true);
        jf1.add(b2);
       
//Fenster zum Abfragen der Vokabeln   

        jf2 = new JFrame();
        jf2.setSize(600,400);
        jf2.setLayout(null);
        jf2.setVisible(false);
        jf2.setTitle("Lass uns trainieren!");
        jf2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        jl3 = new JLabel();
        jl3.setBounds(180,50,200,50);
        jl3.setText("Übersetze folgende Vokabel:");
        jf2.add(jl3);
       
//Textfeld zum Anzeigen der Vokabel aus der Datenbank       
       
        tf5 = new JTextField();
        tf5.setBounds(180, 100, 200, 50);
        tf5.setEditable(false);
        tf5.setText("");
        jf2.add(tf5);
       
//Textfeld zum Eingeben der Übersetzung       
       
        tf6 = new JTextField();
        tf6.setBounds(180, 200, 200, 50);
        tf6.setEditable(true);
        jf2.add(tf6);

        b5 = new JButton();
        b5.setBounds(180,280,80,50);
        b5.setText("Prüfen");
        b5.addActionListener(this);
        jf2.add(b5);
       
        b6 = new JButton();
        b6.setBounds(300,280,80,50);
        b6.setText("Weiter");
        b6.addActionListener(this);
        jf2.add(b6);
       
//Fenster zum Eingeben der Vokabeln   

        jf3 = new JFrame();
        jf3.setSize(600,400);
        jf3.setLayout(null);
        jf3.setVisible(false);
        jf3.setTitle("Vokabeltrainer");
        jf3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        jl1 = new JLabel();
        jl1.setBounds(150, 150, 100, 30);
        jl1.setText("Deutsch:");
        jl1.setHorizontalAlignment(JLabel.CENTER);
        jf3.add(jl1);

        tf2 = new JTextField();
        tf2.setBounds(300, 150, 100, 30);
        tf2.setEditable(true);
        jf3.add(tf2);
       
        jl2 = new JLabel();
        jl2.setBounds(150, 200, 100, 30);
        jl2.setText("Englisch:");
        jl2.setHorizontalAlignment(JLabel.CENTER);
        jf3.add(jl2);

        tf3 = new JTextField();
        tf3.setBounds(300, 200, 100, 30);
        tf3.setEditable(true);
        jf3.add(tf3);


        tf4 = new JTextField();
        tf4.setBounds(50, 50, 500, 50);
        tf4.setText("Gebe hier deine Vokabeln ein:");
        Font font2 = new Font("SansSerif", Font.BOLD, 28);
        tf4.setFont(font2);
        tf4.setHorizontalAlignment(JTextField.CENTER);
        tf4.setEditable(false);
        jf3.add(tf4);

        b3 = new JButton();
        b3.setBounds(300,250,150,50);
        b3.setText("Übernehmen");
        b3.addActionListener(this);
        jf3.add(b3);

        b4 = new JButton();
        b4.setBounds(5,5,100,30);
        b4.setText("Zurück");
        b4.addActionListener(this);
        jf3.add(b4);
       
       
        jf1.setVisible(true);
       
        try
        {
            load_con();
        }
        catch(Exception e) { e.printStackTrace(); }
    }
    private void load_con() throws Exception
    {
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost/vokabeln?user=root&password=");
        stmt=con.createStatement();
        try {
            ResultSet rs = stmt.executeQuery("SELECT englisch FROM Vokabelliste order by rand() limit 1");
            if(rs.next()){
            tf5.setText(""+rs.getString("englisch"));   
            }
        } catch (SQLException e) {
            System.out.println("Fehler!");
        }
    }

    public void actionPerformed(ActionEvent a) {
        String cmd = a.getActionCommand();
        if(cmd.equals("Trainieren!")){
            jf1.setVisible(false);
            jf2.setVisible(true);
        }
        if(cmd.equals("Neue Vokabeln Hinzufügen")){
            jf1.setVisible(false);
            jf3.setVisible(true);
        }
        if(cmd.equals("Zurück")){
            jf3.setVisible(false);
            jf1.setVisible(true);
        }
       
//Nach bedienen des Buttons werden deutsche und englische Vokabel in der Datenbank gespeichert       
       
        if(cmd.equals("Übernehmen")){
            String eingabe = tf2.getText();
            tf2.setText("");

            String eingabe1 = tf3.getText();
            tf3.setText("");

            try{
                stmt.executeUpdate("insert into Vokabelliste (deutsch, englisch) value ('"+eingabe+"','"+eingabe1+"')");
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            tf2.setText("");
            tf3.setText("");
           
        }
        if(cmd.equals("Prüfen")){
               
                try{
                    System.out.println("prüfen wird ausgeführt");
                    ResultSet rs = stmt.executeQuery("SELECT deutsch, englisch FROM Vokabelliste where deutsch='" + deutsch +"' and englisch='" + englisch + "'");
                    while(rs.next()){
                        richtig = true;
                        tf6.setText("");
                        System.out.println("Richtig!");
                }
                }catch(Exception e) {
                    System.out.println("Fehler!");
                }
        }
       
        if(cmd.equals("Weiter")){
            tf5.setText("");
            jf2.repaint();
            jl3.repaint();
           
//Eine englische Vokabel soll aus der Datenbank genommen werden und in Textfeld5 hinzugefügt           
           
            try {
                ResultSet rs = stmt.executeQuery("select englisch from Vokabelliste order by rand() limit 1");
                while(rs.next()){
                tf5.setText(""+rs.getString("englisch"));   
                }
            } catch (SQLException e) {
                System.out.println("Fehler!");
            }
        }
    }
}
 

TheFrog

Aktives Mitglied
Strings vergleichst du mit equals.

if(str1. equals(str2) ==true)

Auf die werte von textfeldern greifst du mit getText() zu ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Datenbankabfrage mit loop Datenbankprogrammierung 17
N MySQL Datenbankabfrage oder Arraylist? Datenbankprogrammierung 2
J Datenbankabfrage / Teilmengen Datenbankprogrammierung 2
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
C Modellierung Datenbankabfrage Datenbankprogrammierung 1
W SQL-Statement Datenbankabfrage über Yahoo Datenbankprogrammierung 0
B Fehlerhafte Datenbankabfrage Datenbankprogrammierung 3
H Oracle Datenbankabfrage ausgeben Datenbankprogrammierung 13
E MySQL Anzeige Datenbankabfrage in Textfeld o.ä. Datenbankprogrammierung 34
L Datenbankabfrage mit einer Range Datenbankprogrammierung 3
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
E H2 - Datenbankabfrage gibt NULL aus? Datenbankprogrammierung 4
H Einfache Datenbankabfrage Datenbankprogrammierung 14
S ResultSet einer Datenbankabfrage - Nullpointer Exception Datenbankprogrammierung 13
F Problem mit Datenbankabfrage Datenbankprogrammierung 7
M Problem bei einfacher Datenbankabfrage Datenbankprogrammierung 7
W Problem mit Datenbankabfrage Datenbankprogrammierung 3
S Datenbankabfrage mit Applet Datenbankprogrammierung 13
A Datenbankabfrage mit KeyListener Datenbankprogrammierung 5
C Rückgabetyp einer Datenbankabfrage Datenbankprogrammierung 12
V Datenbankabfrage in einem Textfeld ausgeben Datenbankprogrammierung 3
L einfache Datenbankabfrage ohne erstes Element Datenbankprogrammierung 2
E Nochmal eine Datenbankabfrage Frage :-o (JOIN oder so) Datenbankprogrammierung 4
R NUllPointerException bei Datenbankabfrage Datenbankprogrammierung 4
A SQL Datenbankabfrage in Array speichern Datenbankprogrammierung 3
P Datenbankabfrage MYSQL aus Applet heraus Datenbankprogrammierung 6
D Datenbankabfrage will nicht funktionieren Datenbankprogrammierung 5
C vergleichende Datenbankabfrage Datenbankprogrammierung 5
G datenbankabfrage Datenbankprogrammierung 4
A datenbankabfrage in sql mit java Datenbankprogrammierung 32
T Nochmal Datenbankabfrage Datenbankprogrammierung 6
L JTextfield Eingabe an DB übergeben Datenbankprogrammierung 5
D MySQL Eingabe wird nicht übernommen... Datenbankprogrammierung 11
pg1337 PostgreSQL Werte auf Eingabe speichern Datenbankprogrammierung 23
R Fehler in der Eingabe? Datenbankprogrammierung 3
G SQL Injection - Wie Eingabe filter? Datenbankprogrammierung 3
G textfeld eingabe nicht in den SQL befehl einbinden Datenbankprogrammierung 14
P Primärschlüssel direkt nach der Eingabe wieder auslesen Datenbankprogrammierung 7
S Problem bei Eingabe von Dateipfad in eine MySQL-Datenbank Datenbankprogrammierung 4
S Update Tabelle aus Textfeld Datenbankprogrammierung 2
H Aus Arraylist in Textfeld schreiben Datenbankprogrammierung 4
T Zelleninhalt zu Textfeld und wieder zurück Datenbankprogrammierung 2
G Suchen von Zahlen in einem Textfeld / SQL Server Datenbankprogrammierung 1
W Problem mit Anführungszeichen in SQL-Textfeld Datenbankprogrammierung 3
K Problem beim Einlesen von Werten aus einem Textfeld Datenbankprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben