Я пытаюсь написать этот запрос, чтобы аутентифицировать имя пользователя и пароль моего API, но я получаю столбец ошибок, который не найден. И имя пользователя, и пароли являются строками, и я использую базу данных MYSQL. Я думаю, что есть ошибка с котировками, поскольку имя пользователя и пароль - это строки. Как я могу исправить код ниже или есть лучший способ написать то же самое. P.S - Я использую весенний MVC, и это мой первый проект.Ошибка в шаблоне JDBC Querying
@Override
public TypeInfo getRole(final TypeInfo typeinfo) {
String sql =
"select Role from registartion where UserName=\"" + typeinfo.getUserName() + "and Password=\"" + typeinfo.getPassword() + "/"";
return jdbcTemplate.query(sql, new ResultSetExtractor<TypeInfo>() {
@Override
public TypeInfo extractData(ResultSet rs)
throws SQLException, DataAccessException {
if (rs.next()) {
System.out.println("VALID USER");
TypeInfo typeinfo1 = new TypeInfo();
typeinfo1.setUserName(typeinfo.getUserName());
typeinfo1.setPassword(typeinfo.getPassword());
typeinfo1.setRole(rs.getString("Role"));
return typeinfo1;
}
System.out.println("Not A valid user");
return null;
}
});
}
Я получаю сообщение об ошибке, что «выберите роль из registartion где UserName = ******» имя столбца ******* не найдено.
Возможно, имя таблицы не 'registartion', а' registration'? –
В строковых литералах SQL ограничены ** одиночными ** кавычками. Двойные кавычки предназначены для цитирования имен объектов. Поэтому, по сути, вы спрашиваете, где Username = ""; этот столбец не существует. Также: используйте PreparedStatement с параметрами, не объединяйте предоставленные пользователем значения в строку запроса. –