Ok, так, например, моя таблица будет выглядеть следующим образом:Java ResultSet возвращается все записи после первой правильной записи находится из MySQL Query
┌──────┬────────┬─────────────┬───────────┐ │UserID│Username│CurrentLeague│TotalPoints│ ├──────┼────────┼─────────────┼───────────┤ │1 │Elliot │randomLeague │15 │ ├──────┼────────┼─────────────┼───────────┤ │2 │Callum │randomLeague │20 │ ├──────┼────────┼─────────────┼───────────┤ │3 │Rory │testLeague │17 │ ├──────┼────────┼─────────────┼───────────┤ │4 │Admin │NULL │0 │ ├──────┼────────┼─────────────┼───────────┤ │5 │Steve │randomLeague │21 │ └──────┴────────┴─────────────┴───────────┘
И вот мой код в моем Java проекте для класса, который я Я использую здесь.
public int getLeaguePosition(String username)
{
try
{
int leaguePosition = 0;
String leagueName = getLeague(username);
System.out.println("League Name: " + leagueName);
ArrayList<SortingUser> sortingUser = new ArrayList<SortingUser>();
String query = "SELECT * FROM Users WHERE CurrentLeague = ?";
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, leagueName);
resultSet = preparedStatement.executeQuery();
while(resultSet.next())
{
String retrievedUsername = resultSet.getString("Username");
System.out.println(retrievedUsername);
SortingUser retrievedUser = new SortingUser(retrievedUsername);
sortingUser.add(retrievedUser);
}
Collections.sort(sortingUser);
for(int i = 0; i < sortingUser.size(); i++)
{
SortingUser retrievedSortingUser = sortingUser.get(i);
String retrievedUsername = retrievedSortingUser.getUsername();
if(retrievedUsername.contains(username) && username.contains(retrievedUsername))
{
leaguePosition = i + 1;
System.out.println("League Position for " + username.toUpperCase() + " is " + leaguePosition);
return leaguePosition;
}
}
}
catch(Exception e)
{
System.out.println("Couldn't get league position for: " + username);
e.printStackTrace();
}
return 0;
}
и если я дал его «Рори» в качестве имени пользователя было бы вернуть записи с ID 3, 4 и 5, а не только 3 при расчете позиции.
Зачем это происходит? Я уверен, что мой код верен, потому что, когда я копирую этот точный SQL-запрос в phpMyAdmin, он отлично работает.
Вы возвращаете первое совпадающее положение лиги, что вы здесь задаете? Кстати, 'leaguePosition = i + 1;' выглядит неправильно для меня. –
Что вы подразумеваете под «если я дал ему« Rory »как имя пользователя»? Ваш код не запрашивает имя пользователя. Он запрашивает имя лиги, а ваш запрос SQL запрашивает имя лиги. – Kenster
@ElliottFrisch да, потому что массивы начинаются с 0, а позиция вещей в таблице начинается с 1. Например, первый столбец будет считан как столбец 0 вместо столбца 1. :) – Elliot