Правильно ли следующий SQL-запрос для подсчета нескольких полей из таблицы? - PullRequest
0 голосов
/ 05 июля 2018
Statement statement = conn.createStatement();
ResultSet rs1 = statement.executeQuery(
  "Select count(*) from user where username=? OR email=? OR phone=?"
);
int c = 0;

while (rs1.next()) {
    c++;
}

1 Ответ

0 голосов
/ 05 июля 2018

Ваш код имеет некоторые проблемы:

  • Сначала вы должны использовать PreparedStatement, потому что вы используете ? заполнитель
  • Вы не должны использовать while, потому что ваш запрос возвращает только один результат

Вместо этого ваш код должен выглядеть так:

String query= "Select count(*) as cnt from user where username=? OR email=? OR phone=?";
try (PreparedStatement pstmt = conn.prepareStatement(query);) {
    pstmt.setString(1, username);
    pstmt.setString(2, email);
    pstmt.setString(3, phone);
    ResultSet rs1 = pstmt.executeQuery();
    long c = 0;
    if(rs1.next()){
        c = rs1.getLong("cnt");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...