метод не проверяет значение должным образом - PullRequest
0 голосов
/ 02 мая 2020
static boolean checkCode(String Code, Connection conn) throws SQLException {
        Statement s; 
        String cc = null;
        try {
            String Statement = "SELECT Code from Courses where Code="+ Code;
            s = conn.createStatement();
            ResultSet rs = s.executeQuery(Statement);
            while (rs.next()) {
                cc = rs.getString("Code");   
            }

            if((Code.equalsIgnoreCase(cc)))
                return true;

            else
               return false;

        }
        catch (SQLException e) {} 
        return false;
    } 

Я использую переключатель, и 3 случая не работают должным образом (удалите, используя код курса, обновите, используя код курса, и просмотрите указанный c курс, используя код курса), поэтому я думаю, что ошибка в метод checkCode. Может ли кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 02 мая 2020

Вы выбираете значение, значение которого равно самому себе. Я бы просто получил количество подходящих записей. Далее, вы не закрываете ресурсы, которые открываете в своем методе. И вы молча глотаете любые возникающие исключения. Наконец, вы не используете PreparedStatement, поэтому ваш запрос (по крайней мере, на первый взгляд) уязвим для sql инъекции.

Что-то вроде,

static boolean checkCode(String Code, Connection conn) throws SQLException {
    String query = "SELECT count(*) from Courses where Code=?";
    try (PreparedStatement ps = conn.prepareStatement(query)) {
        ps.setString(1, Code);
        try (ResultSet rs = ps.executeQuery()) {
            if (rs.next()) {
                return rs.getInt(1) > 0;
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...