Вернуть значение из базы данных (SQLSyntaxErrorException: Unknown column 'admin' in 'where clause)
Есть класс:
@ManagedBean
@SessionScoped
public class Login implements Serializable {
private static final long serialVersionUID = 1094801825228386363L;
private String pwd;
private String msg;
private String user;
private String admin_sign;
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getAdmin_sign() {
return admin_sign;
}
public void setAdmin_sign(String admin_sign) {
this.admin_sign = admin_sign;
}
public boolean validate(String user, String password) {
Connection con = null;
PreparedStatement ps = null;
try {
con = DataConnect.getConnection();
ps = con.prepareStatement("Select uname, password, admin_sign from Users where uname = ? and password = ? and access_sign = '1'");
ps.setString(1, user);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if (rs.next())
{
return true;
}
} catch (SQLException ex) {
System.out.println("Login error -->" + ex.getMessage());
return false;
} finally {
DataConnect.close(con);
}
return false;
}
public String getAdminSign(String userr) {
Connection con = null;
Login log = new Login();
try {
con = DataConnect.getConnection();
Statement stmt = getConnection().createStatement();
ResultSet rs = stmt.executeQuery("select admin_sign from users where uname = " + (userr));
rs.next();
log.setAdmin_sign(rs.getString("admin_sign"));
System.out.println("log.admin_sign " + log.admin_sign);
con.close();
} catch (Exception e) {
System.out.println("error getAdminSign " + e);
System.out.println("user " + userr);
}
return log.admin_sign;
}
}
Как вывести значение в <p:outputLabel value=" #{login.getAdminSign(login.user)} " />?
Мне нужно вывести значения поля admin_sign из метода public String getAdminSign(String userr).
Выходит ошибка: error getAdminSign java.sql.SQLSyntaxErrorException: Unknown column 'admin' in 'where clause'.
Ответы (1 шт):
Автор решения: default locale
→ Ссылка
Не стройте запрос через конкатенацию строк, это приводит к сложно уловимым ошибкам (в данном случае, строка admin воспринимается как имя столбца, т.к. указана без кавычек) и к серьезным проблемам безопасности (SQL-инъекции).
Вместо этого используйте запрос с параметром:
...
con = DataConnect.getConnection();
PreparedStatement stmt = con.prepareStatement("select admin_sign from users where uname = ?");
stmt.setString(1, userr);
ResultSet rs = stmt.executeQuery();
...