Сохранить счет игры в базу данных sqlite Java - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь сохранить счет игры в базе данных SQLite. Я создал таблицу SCORE и поле HIGHSCORE в браузере БД. В классе Game я вызываю следующий метод после завершения игры

private void Add(int highScore) {
    try {
        Class.forName("org.sqlite.JDBC");
        c = DriverManager.getConnection("jdbc:sqlite:score.db");
        c.setAutoCommit(false);
        stmt = c.createStatement();
        String sql = " INSERT INTO SCORE (HIGHSCORE) " +
                "VALUES (highScore);"+highScore;
        stmt.executeUpdate(sql);
        stmt.close();
        c.close();
    } catch (Exception e) {
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }
    System.out.println("Score registred");
}

И это ошибка: java.sql.SQLException: нет такого столбца: highScore

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Вы неправильно передаете параметр.Измените это на:

    Class.forName("org.sqlite.JDBC");
    c = DriverManager.getConnection("jdbc:sqlite:score.db");
    c.setAutoCommit(false);
    String sql = "INSERT INTO SCORE (HIGHSCORE) VALUES (?);";
    PreparedStatement stmt = c.prepareStatement(sql);
    stmt.setInt(1, highScore);
    stmt.executeUpdate(sql);
    stmt.close();
    c.close();

Таким образом, вы передадите параметр highScore в оператор sql.

0 голосов
/ 21 мая 2019
 String sql = " INSERT INTO SCORE (HIGHSCORE) " +
              "VALUES (highScore);"+highScore;

Это неправильно, так как он создает запрос wierdo:

INSERT INTO SCORE (HIGHSCORE) VALUES (highScore); 7328

Быть 7328 ипример вашей оценки.Запрос должен быть:

 String sql = " INSERT INTO SCORE (HIGHSCORE) " +
              "VALUES ("+highScore+");";

Обратите внимание на синтаксис для объединения строкового значения переменной в переменную String sql.Теперь строка должна выглядеть следующим образом:

INSERT INTO SCORE (HIGHSCORE) VALUES (7328);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...