Правильно ли следующий SQL-запрос для подсчета нескольких полей из таблицы?

0
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++;
}
  • 0
    Вы должны использовать PreparedStatement
  • 0
    нет это не так. Заполнители в запросе никогда не заменяются. Тогда вы, кажется, посчитаете количество строк ResultSet. Это неправильно, так как ваш запрос уже возвращает числовое значение из-за count(*) .
Теги:
jdbc

1 ответ

3

У вашего кода есть некоторые проблемы:

  • Сначала вы должны использовать 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");
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню