Возврат данных из базы данных путем поиска в двух столбцах

Я ищу, чтобы отобразить все поля, когда пользовательский ввод совпадает с 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 + "%'");

Если только вы не ищете точное совпадение, в этом случае я бы удалил лайк и использовал вместо этого "=".

Другие вопросы по тегам