Возврат данных из базы данных путем поиска в двух столбцах
Я ищу, чтобы отобразить все поля, когда пользовательский ввод совпадает с cUsername и cPassword. При тестировании я получаю сообщение об ошибке в моем синтаксисе SQL (рядом с тем, где находится cPassword). Кто-нибудь может предложить проблему? Пожалуйста, имейте в виду, что я еще не прошел SQL-инъекцию...
public Car getLogin(String searchUser, String searchPass) {
Car foundCar1 = new Car();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url + dbName, userName, password);
statement = conn.createStatement();
resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '" + searchUser
+ "' AND where cPassword like '" + searchPass + "'");
while (resultSet.next()) {
foundCar1 = new Car(resultSet.getInt("cID"), resultSet.getString("cLicense"),
resultSet.getInt("cJourneys"), resultSet.getString("cUsername"),
resultSet.getString("cPassword").toString());
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return foundCar1;
}
1 ответ
Здесь есть несколько проблемных вещей, кроме вашей ошибки. Ошибка вызвана несколькими предложениями where. Исправьте это, изменив:
AND where cPassword like
в AND cPassword like
Другая вещь, которую я вижу, это то, что like следует использовать в сочетании с подстановочными знаками, так что вы можете захотеть изменить:
resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '" + searchUser
+ "' AND where cPassword like '" + searchPass + "'");
чтобы:
resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '%" + searchUser
+ "%' AND cPassword like '%" + searchPass + "%'");
Если только вы не ищете точное совпадение, в этом случае я бы удалил лайк и использовал вместо этого "=".