Ошибка входа: java. sql .SQLException: столбец 'user.id' не найден - PullRequest
1 голос
/ 18 января 2020

Я пытаюсь создать страницу входа в систему, но я получаю эту ошибку:

error: java.sql.SQLException: Column 'user.id' not found. 

Когда я вызываю класс, кажется, не может найти мой идентификатор столбца. Столбец Id находится в моей базе данных SQL с правильным именем. Однако это не работает.

Я пытался искать разные решения, но я не могу найти ни одного. Пожалуйста помоги. Ниже приведены мои Java классы DAO и мой jsp файл.

public static user getAccountByNamePass(String user_Name, String password) {
        user result = null;
        Connection connection = null;
        PreparedStatement ps = null;

        try {
            DB_Connection obj_DB_Connection = new DB_Connection();
            connection=obj_DB_Connection.get_Connection();

            String sql = "SELECT * FROM users WHERE user_name = ? AND password = ?";

            ps = connection.prepareStatement(sql);

            ps.setString(1, user_Name);
            ps.setString(2, password);
            ResultSet res = ps.executeQuery();
            while (res.next()) {
                result = createAccountResult(res);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } 
        return result;
    }


    static user createAccountResult(ResultSet res) throws SQLException {
        user buyer = null;
        int id2 = res.getInt("user.id");
        String firstName = res.getString("user.first_name");
        String lastName = res.getString("user.last_name");
        String userName = res.getString("user.user_name");
        String password = res.getString("user.password");

        buyer = new user(id2, firstName, lastName, userName, password);
        return buyer;
    } 




    ArrayList<String> errors = new ArrayList<>();

    String user_name = "";
    String password = "";

    if (request.getParameter("login") != null) {
        user_name = request.getParameter("user_name");
        password = request.getParameter("password");

        if (user_name.trim().isEmpty()) {
            errors.add("Please enter username");
        }

        if (password.trim().isEmpty()) {
            errors.add("Please enter password");
        }

        if (errors.isEmpty()) {
            user user = usersDAO.getAccountByNamePass(user_name, password);

            if (user == null) {
                errors.add("Wrong username or password!");
            } else {
                UserSession sessionModel = (UserSession) request.getSession().getAttribute("sessionModel");
                sessionModel.login(user.getId());

                response.sendRedirect("frontPage.jsp");
                return;
            }
        }
    } else if (request.getParameter("logout") != null) {
        UserSession model1 = (UserSession) request.getSession().getAttribute("sessionModel");
        model1.logout();
        response.sendRedirect("frontPage.jsp");
        return; 
    }




Ответы [ 2 ]

3 голосов
/ 18 января 2020

Вам не нужно использовать имя таблицы, просто используйте имя столбца следующим образом:

int id2 = res.getInt("id");
String firstName = res.getString("first_name");
String lastName = res.getString("last_name");
String userName = res.getString("user_name");
String password = res.getString("password");
0 голосов
/ 18 января 2020

Может быть здесь:

int id2 = res.getInt("user.id");

Должно быть user_id или просто id?

...