#java #mysql
#java #mysql
Вопрос:
Мне нужно выполнить задачу для веб-приложения, то есть создать страницу для отображения информации о клиенте, запрашивая их через идентификатор сеанса клиента (или какой-либо другой метод) и выполняя запрос MySQL в мою базу данных участников.
Последовательность должна быть следующей: 1. клиент входит в систему 2. сравните пароль клиента и базу данных членства, если совпадение, клиент сможет получить доступ к некоторым страницам 3. одна из этих доступных страниц (упомянутых в 2) будет содержать ссылку, которая затем будет запрашивать информацию о клиентев базе данных членства 4. запрошенные строки (результаты) будут отображаться на веб-странице с надлежащим css
просто отказ от ответственности, я полный новичок в Java
Имя таблицы базы данных членства = член
id | first name | last name | address | telephone number
Я уже создал и настроил соединение jdbc с базой данных:
public void init () throws ServletException {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/membership","root","");
stmt = conn.createStatement();
} catch (ClassNotFoundException ex) { // for Class.forName()
ex.printStackTrace();
} catch (SQLException ex) { // for getConnection()
ex.printStackTrace();
}
}
String query = "SELECT * FROM member WHERE xxx ";
ResultSet rset = stmt.executeQuery(query);
мой вопрос: как мне получить необходимые строки для моей проблемы здесь? и как мне следует подойти к решению этого вопроса?
большое спасибо за ваш совет
Ответ №1:
«мой вопрос: как мне получить необходимые строки для моей проблемы здесь?»
Используйте свой объект ResultSet (rset). Затем извлеките все нужные вам столбцы. Что-то похожее на это:
while (rs.next()) {
int ID = rs.getInt("id");
String fName = rs.getString("first_name");
String lName = rs.getString("last_name");
String address = rs.getString("address");
String phone = rs.getString("telephone_number");
}
Ответ №2:
Во-первых, я настоятельно рекомендую вам не использовать пробелы в именах столбцов (например, вместо этого используйте ‘_’).
Каковы ваши учетные данные пользователя для входа в систему? Я полагаю, что это имя пользователя или адрес электронной почты, а также пароль. Какой бы ни была первая часть этого (например, имя пользователя), вы можете использовать ее в качестве первичного ключа в вашей таблице членов. Итак, после того, как они вошли в систему, у вас уже есть имя пользователя, и это формирует предложение ‘where’ в вашем SQL-запросе. (Если они входят в систему с помощью email_address , все работает так же, используя это вместо имени пользователя.)
Итак, шаги
- Возьмите имя пользователя пароль от пользователя
- Выберите количество строк, соответствующих этой паре
- Если count == 1, то они аутентифицируются, в противном случае отклоняются
- Выберите другие поля, соответствующие имени пользователя
- Отображение пользователю
Не храните пароли открытым текстом, поэтому, какое бы преобразование вы ни применяли для их хранения, также примените его к заданному паролю, прежде чем выполнять # 2. Если вы решите, чтобы имя пользователя не было первичным ключом, убедитесь, что вы сделали его по крайней мере «уникальным» с помощью ограничения.