Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir

Doa

Neues Mitglied

Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir​


package Gastrobook;

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

public class GUIBestelluebersicht {
JLabel nameLabel;
private JPanel panel1;
private JButton buttonplus;
private JButton buttonMinus;
private JTextField textFieldAnzahl;
private JTextField textFieldKommentar;
private int aktuelleAnzahl = 0;


public GUIBestelluebersicht() {

// ActionListener für den "minus"-Button
buttonMinus.addActionListener(e -> {
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:sqlite:DatenBankGastrobook");
String deleteQuery = "DELETE FROM BestellPosition WHERE Name=?";

PreparedStatement deleteStmt = conn.prepareStatement(deleteQuery);
deleteStmt.setString(1, nameLabel.getText()); // Set the value for the placeholder
int rowsDeleted = deleteStmt.executeUpdate();

conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
});

// ActionListener für das Kommentar-Textfeld
textFieldKommentar.addActionListener(e -> {
String kommentar = textFieldKommentar.getText();

// Speichern des Kommentars in der MySQL-Datenbank
try {
Connection conn = DriverManager.getConnection("jdbc:sqlite:DatenBankGastrobook");
String insertQuery = "INSERT INTO BestellPosition (Kommentar) VALUES (?)";

PreparedStatement insertStmt = conn.prepareStatement(insertQuery);
insertStmt.setString(1, kommentar);
insertStmt.executeUpdate();

conn.close();

// Erstellen Sie eine Instanz von BestellPosition und fügen Sie sie zur entsprechenden Liste oder Datenstruktur in der BestellübersichtGUI hinzu
BestellPosition bestellPosition = new BestellPosition();
bestellPosition.setKommentar(kommentar);
// Fügen Sie die bestellPosition zur BestellübersichtGUI hinzu
// Beispiel: bestelluebersichtGui.addBestellPosition(bestellPosition);
} catch (SQLException ex) {
ex.printStackTrace();
}

textFieldKommentar.setText(""); // Zurücksetzen des Textfelds nach dem Speichern des Kommentars
});

}




public JPanel getPanel1() {
return panel1;
}
// Eine private Methode, die die maximale Anzahl von Elementen überprüft
private void checkMaxAnzahl(int aktuelleAnzahl) {
if (aktuelleAnzahl >= 50) {
JOptionPane.showMessageDialog(null, "Maximale Anzahl erreicht!");
buttonplus.setEnabled(false); // Deaktivieren des "plus"-Buttons
} else {
buttonplus.setEnabled(true); // Aktivieren des "plus"-Buttons
}
}

public JLabel getNameLabel() {
return nameLabel;
}

public void setNameLabel(JLabel nameLabel) {
this.nameLabel = nameLabel;
}

public void setPanel1(JPanel panel1) {
this.panel1 = panel1;
}

public JButton getButtonplus() {
return buttonplus;
}

public void setButtonplus(JButton buttonplus) {
this.buttonplus = buttonplus;
}

public JButton getButtonMinus() {
return buttonMinus;
}

public void setButtonMinus(JButton buttonMinus) {
this.buttonMinus = buttonMinus;
}

public JTextField getTextFieldAnzahl() {
return textFieldAnzahl;
}

public void setTextFieldAnzahl(JTextField textFieldAnzahl) {
this.textFieldAnzahl = textFieldAnzahl;
}

public JTextField getTextFieldKommentar() {
return textFieldKommentar;
}

public void setTextFieldKommentar(JTextField textFieldKommentar) {
this.textFieldKommentar = textFieldKommentar;
}

public int getAktuelleAnzahl() {
return aktuelleAnzahl;
}

public void setAktuelleAnzahl(int aktuelleAnzahl) {
this.aktuelleAnzahl = aktuelleAnzahl;
}


}
 

Oneixee5

Top Contributor
Es gibt mehrere mögliche Fehlerquellen. Existiert die Tabelle in der DB? Wird eine Fehlermeldung ausgegeben, wenn ja welche?

Schön ist auch der Kommentar für das Speichern in einer SQLite-DB:
Java:
// Speichern des Kommentars in der MySQL-Datenbank
 

KonradN

Super-Moderator
Mitarbeiter
Erst einmal ein paar allgemeine Dinge:

a) Code bitte immer in Code Tags - also am Besten über den Knopf </> links oberhalb des Eingabebereiches posten.
b) Datenbank Details wären noch interessant.

Bezüglich des Problems:
Ich denke, Du solltest Dir einmal die SQl Grundlagen noch einmal ansehen!

Du hast eine Tabelle BestellPosition - die hat irgendwelche Felder. Bekannt für uns sind Name (darüber willst Du ja löschen) und Kommentar.

Wenn Du den Kommentar speichern willst, dann bedeutet das doch, dass Du einen Datensatz hast (mit Name und Kommentar und was weiss ich nicht noch alles) und Du willst den Datensatz in der Datenbank dann aktualisieren. Das wäre dann aber ein UPDATE Befehl.

Dein SQL Befehl mit INSERT INTO BestellPosition (Kommentar) VALUES (?) würde einen komplett neuen Datensatz erzeugen, bei dem alle Werte null sind und nur das Feld Kommentar bekommt einen Wert. Und so ein Feld keinen null Wert annehmen kann, wird der Befehl fehlschlagen.

Und dann noch einen ganz wichtigen Tipp:
Vermenge nicht Logik mit UI! Mach also eine Klasse, die nur die Datenbankzugiffe macht. Dann hast Du eine Klasse für einen Datensatz. Also z.B. eine Klasse a.la.
Java:
public class BestellPosition {
    int id;
    String Name;
    String Kommentar;
    
    // Getter & Setter
}

Dann kannst Du in einer anderen Klasse so Datensätze lesen und schreiben. Dann hast Du in der Klasse mit der UI einfach eine Instanz von dieser Klasse und da kannst Du dann Daten lesen, schreiben, löschen, ....

Damit teilst Du die Komplexität auf und es wird einfacher, einen Überblick über den Code zu behalten und diesen zu testen und so.
 

Neue Themen


Oben