#java #mysql
#java #mysql
Вопрос:
Я новичок в MySQL и на самом деле не знаю, как проверить, существует ли в столбце «Код друга» то же значение, и если это так, то следует посмотреть, есть ли в той же строке в столбце «просмотрено» значение «0». Мне уже удалось проверить, существует ли код в строке. Я просто не знаю, как искать второе условие.
Вот изображение, как выглядит таблица:
И вот что мне уже удалось сделать:
public static boolean checkRow(String query) {
boolean ret = false;
try (Connection con = DriverManager.getConnection(url, user, password)) {
Statement stmt = con.createStatement();
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
if (rs.next() amp;amp; !rs.getString("watched").equals(0)) {
ret = false;
} else {
ret = true;
}
rs.close();
stmt.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
return ret;
}
Комментарии:
1. Вероятно, вам следует также включить
query
то, что вы используете.2.
!rs.getString("watched").equals(0)
не сработает. Вы получаете строку и сравниваете ее с целым числом. Предполагая, что столбец никогда не равен нулю и всегда содержит целые числа, попробуйтеrs.getInt("watched") != 0
вместо этого.3. Что такое
query
значение параметра? Почему вы не выполняетеSELECT COUNT(*) AS cnt FROM tablename WHERE friendCode = @friendCode AND watched = 0
? Этот запрос вернет одну строку с одним столбцом,cnt
значение которого’ может быть 0 (ни одна строка не соответствовала условиям) или выше (количество совпадающих строк). Или даже более оптимальноSELECT EXISTS (SELECT 1 FROM tablename WHERE friendCode = @friendCode AND watched = 0) AS cnt
, который возвращает 1 или 0 (совпадающая строка существует или нет).
Ответ №1:
-
Я думаю, что вы не написали никакого запроса select в этой программе. Если вы вызываете из основного метода, просто проверьте и попробуйте следующие шаги.
-
В рассматриваемом столбце данной таблицы есть данные целочисленного типа.
-
Ваше сравнение со строковым типом.
-
Попробуйте мой код, он работает, если у вас есть какие-либо опасения, вернитесь к этому комментарию.
public static boolean checkRow(String query) { boolean ret = false; try (Connection con = DriverManager.getConnection(url, user, password)) { Statement stmt = con.createStatement(); stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); if (rs.next() amp;amp; rs.getString("watched")!=0) { ret = false; } else { ret = true; } rs.close(); stmt.close(); } catch (SQLException e) { System.out.println(e.getMessage()); } return ret; }