mysql 我无法使用Javafx表更新SQL数据库[关闭]

ryevplcw  于 2023-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(109)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

10天前关闭。
Improve this question
目标是使用JavaFX表更改SQL表中的值。阅读工作正常,只是缺少插入。

private void getQuery() {
    if (aktualisieren == false) {

        query = "INSERT INTO tabelle (Verein, Spiele, Siege, Niederlagen, Unentschieden, Tore, Gegentore, Tordifferenz, Punkte) VALUES (?,?,?,?,?,?,?,?,?)";

    }else{
        query = "UPDATE `tabelle` SET "
                    + "`Verein`=?,"
                    + "`Spiele`=?,"
                    + "`Siege`=?,"
                    + "`Niederlagen`=?,"
                    + "`Unentschieden`=?,"
                    + "`Tore`=?,"
                    + "`Gegentore`=?,"
                    + "`Tordifferenz`=?,"
                    + "`Punkte`=?";

    }
}
private void insert() {

    try {
        preparedStatement = connection.prepareStatement((query));
        preparedStatement.setString(1, vereinFid.getText());
        preparedStatement.setString(1, spieleFid.getText());
        preparedStatement.setString(1, siegeFid.getText());
        preparedStatement.setString(1, niederlagenFid.getText());
        preparedStatement.setString(1, unentschiedenFid.getText());
        preparedStatement.setString(1, toreFid.getText());
        preparedStatement.setString(1, gegentoreFid.getText());
        preparedStatement.setString(1, punkteFid.getText());

    } catch (SQLException exception) {
           Logger.getLogger(AddTabelleController.class.getName()).log(Level.SEVERE, null, exception);
    }

}
@FXML
void speichern(MouseEvent event) {

    connection = DbVerbindung.getConnect();
    String Verein = vereinFid.getText();
    String Spiele = spieleFid.getText();
    String Siege = siegeFid.getText();
    String Niederlagen = spieleFid.getText();
    String Unentschieden = unentschiedenFid.getText();
    String Tore = toreFid.getText();
    String Gegentore = gegentoreFid.getText();
    String Punkte = punkteFid.getText();

    if (Verein.isEmpty() | Spiele.isEmpty()| Siege.isEmpty()| Niederlagen.isEmpty()| Unentschieden.isEmpty()| Tore.isEmpty()| Gegentore.isEmpty()| Punkte.isEmpty())
    {
        Alert alert = new Alert(Alert.AlertType.ERROR);
        alert.setHeaderText(null);
        alert.setContentText("Bitte füllen sie die Daten aus");
        alert.showAndWait();

    }else{
        getQuery();
        insert();
        leeren();
    }

}

我读到我应该添加问号并减少引号,但它仍然不起作用。问题是我没有从IntelliJ得到错误消息,所以我不知道问题是什么。This is what my SQL table looks like.I get this message from SQL when I run my program.

u59ebvdq

u59ebvdq1#

我在你的问题中看到了代码中的几个问题。您使用PreparedStatement是错误的。不能对setString方法的每次调用使用相同的索引。另外,根据您发布的图像,数据库表tabelle中的某些列具有int数据类型,因此方法setString可能不合适。您还应该使用try-with-resources来确保关闭PreparedStatement。此外,只有在调用executeUpdate方法时,数据库才会被更新。考虑以下几点:(请注意,您的代码没有为列Tordifferenz赋值,这将导致错误。

private void insert() {
    try (preparedStatement = connection.prepareStatement(query)) {
        preparedStatement.setString(1, vereinFid.getText());
        preparedStatement.setInt(2, Integer.parseInt(spieleFid.getText()));
        preparedStatement.setInt(3, Integer.parseInt(siegeFid.getText()));
        preparedStatement.setInt(4, Integer.parseInt(niederlagenFid.getText()));
        preparedStatement.setInt(5, Integer.parseInt(unentschiedenFid.getText()));
        preparedStatement.setInt(6, Integer.parseInt(toreFid.getText()));
        preparedStatement.setInt(7, Integer.parseInt(gegentoreFid.getText()));
        preparedStatement.setInt(8, Integer.parseInt(punkteFid.getText()));
        preparedStatement.executeUpdate();
    }
    catch (SQLException exception) {
        Logger.getLogger(AddTabelleController.class.getName()).log(Level.SEVERE, null, exception);
    }
}

您是否意识到[SQL] UPDATE将更新tabelle中的所有行,因为它不包含WHERE子句?
在方法speichern中,使用的是bitwise OR而不是logical OR

if (Verein.isEmpty()        ||
    Spiele.isEmpty()        ||
    Siege.isEmpty()         ||
    Niederlagen.isEmpty()   ||
    Unentschieden.isEmpty() ||
    Tore.isEmpty()          ||
    Gegentore.isEmpty()     ||
    Punkte.isEmpty())

相关问题