Не могу добавить данные только в одну колонку, помогите, пожалуйста. MySQL

Суть проблемы: я пишу код, который добавляет в mysql данные пользователя и данные о счете Змейки. Я не могу написать метод для БД, который бы добавлял данные, для ОДНОГО параметра, в отдельный столбец.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DatabaseHandler extends Configs {
    Connection dbConnection;

    public DatabaseHandler() {
    }

    public Connection getDbConnection() throws ClassNotFoundException, SQLException {
        String connectionString = "jdbc:mysql://" + this.dbHost + ":" + this.dbPort + "/" + this.dbName;
        Class.forName("com.mysql.cj.jdbc.Driver");
        this.dbConnection = DriverManager.getConnection(connectionString, this.dbUser, this.dbPass);
        return this.dbConnection;
    }

    public void signUpUser(String name, String number, String game_score) {
        String insert = "INSERT users1(name,number,game_score)VALUES(?,?,?)";

        try {
            PreparedStatement preparedStatement = this.getDbConnection().prepareStatement(insert);
            preparedStatement.setString(1, name);
            preparedStatement.setString(2, number);
            preparedStatement.setString(3, game_score);
            preparedStatement.executeUpdate();
        } catch (SQLException var5) {
            throw new RuntimeException(var5);
        } catch (ClassNotFoundException var6) {
            throw new RuntimeException(var6);
        }
    }

    public void signUpScore(String game_score) {
        String insert = "INSERT users1(game_score)VALUES(?)";
        try {
            PreparedStatement preparedStatement = this.getDbConnection().prepareStatement(insert);
            preparedStatement.setString(3, game_score);
            preparedStatement.executeUpdate();
        } catch (SQLException var5) {
            throw new RuntimeException(var5);
        } catch (ClassNotFoundException var6) {
            throw new RuntimeException(var6);
        }
    }

}

И вот как последовательно добавляю данные:

String r = "не заполнено";
DatabaseHandler databaseHandler = new DatabaseHandler();
databaseHandler.signUpUser(r, r, r);
databaseHandler.signUpUser(CONT.this.name_field.getText(), CONT.this.number_field.getText(), r);

 for(int i = 0; GameField.this.dots >= 3; ++i) {
                    if (GameField.this.dots < 36) {
                        textArea[0] = new JTextArea(String.valueOf(i));
                        DatabaseHandler databaseHandler = new DatabaseHandler();
                        databaseHandler.signUpScore(String.valueOf(i));
                    }
                }

Выводится ошибка: введите сюда описание изображения

введите сюда описание изображения

Если я не заполню game_score как r, то будет необходим третий параметр.


Ответы (1 шт):

Автор решения: Анатолий

у вас в последнем примере цикл либо работает бесконечно, либо не отрабатывает вовсе for(int i = 0; GameField.this.dots >= 3; ++i) так как тут в условии “i” не проверяется, а параметр который указан не изменяется в теле цикла, проверьте этот момент дописав в тело цикла вначале например простое System.out.println(“цикл “ + i);

обновлено:
только сейчас заметил:) preparedStatement.setString(3, game_score); у тебя тут цифра 3, а в параметрах только 1, соответственно ты пытаешся указать что третье значение такое, а значений только одно, поменяй на 1 в методе signUpScore, цифра в том параметре, указывает на порядковый номер знака вопроса

→ Ссылка