, но когда он работает в сети, если два разных пользователя пытаются войти в один и тот же экземпляр, это не работает
Проблема заключается не в коде, опубликованном до сих пор (однако сам по себе крайне беден).Одна из возможных причин заключается в том, что вы вошли в систему как статическая переменная приложения, которая используется всеми клиентами.Таким образом, каждый раз, когда пользователь входит в систему, любой ранее вошедший в систему пользователь будет переопределен последним вошедшим в систему пользователем.
Что касается вашего кода, в нем слишком много неправильного, что все должнобыть переписан.
- Это не является самодокументируемым напрямую.
- Не используется правильный тип для значения.
- Это излишне вызывает два запроса к одной таблицевместо одного.
- Неоправданно смещает набор результатов вперед и назад.
- Он подвержен атакам с использованием SQL-инъекций.
- Утечка ресурсов базы данных.
- Он не обрабатывает исключения разумным образом.
Вот пример того, как это должно быть сделано:
public int getPriority(String username, String password) throws SQLException {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
int priority = 0;
try {
connection = database.getConnection();
statement = connection.prepareStatement("SELECT priority FROM login WHERE username = ? AND password = ?");
statement.setString(1, username);
statement.setString(2, password);
resultSet = statement.executeQuery();
if (resultSet.next()) {
priority = resultSet.getInt("priority");
}
} finally {
if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
return priority;
}
Вот и все.Вот некоторые учебные пособия / статьи, которые я настоятельно рекомендую вам пройти самостоятельно: