// gets user details from jsp form
String username = request.getParameter("username");
String password = request.getParameter("password");
//String forename = request.getParameter("forename");
// sets new user
User us = new User();
us.setCluster(cluster);
//checks user is valid
boolean isValid = us.IsValidUser(username, password);
HttpSession session = request.getSession();
System.out.println("Session in servlet " + session);
// sets the user details so it can be displayed during session
session.setAttribute("userID", username);
sess = cluster.connect("instagrim");
ResultSet results = sess.execute ("SELECT first_name FROM userprofiles WHERE login = 'shadowsurge'" );
for (Row row : results)
{
String userName = (row.getString("first_name"));
request.setAttribute("name", userName);
}
Этот код является частью, над которой я сейчас работаю. Я, наконец, смог прочитать данные из моей базы данных Cassandra, но это только когда я указываю определенное условие, такое как "SELECT first_name FROM userprofiles WHERE login = 'shadowsurge'"
Как исправить этот запрос в базе данных?
Я пытаюсь создать профиль пользователя, поэтому, очевидно, приведенный выше код не подходит, поскольку мне нужно запрос, чтобы захватить данные, связанные с пользователем, который вошел в систему, а не просто захватить данные для одного пользователя независимо от того, кто вошел в систему.
Любой, кто может с этим справиться? В принципе, я хочу, чтобы запрос захватил first_name
, который связан с текущим пользователем, но я не могу понять, что это произойдет.
Итак, вы никогда не пробовали наивную версию '' SELECT first_name FROM userprofiles WHERE login = '"+ имя пользователя +"' "'? Если это сработает, используйте вместо этого «[подготовленный отчет] (http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)». – Tom
Ничего себе, это было так очевидно, почему я этого не сделал. Первый раз, используя Java, JSP, cassandra и т. Д. Я думаю, что я над этим размышляю, но спасибо вам большое! Могу ли я спросить, какова разница между этим путем и делать это в подготовленном заявлении? Я предполагаю, что есть какое-то преимущество в использовании подготовленного заявления или это просто лучшая привычка? – shadowsurge
Подумайте о своем запросе и о том, что произойдет, если я зарегистрирую себя как '' '; DROP TABLE users; - '. Подготовленный оператор избегает SQL-инъекции. – Tom