Как искать столбец в базе данных для соответствия с вводом пользователя - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь запросить базу данных postgresql, чтобы проверить, совпадает ли то, что вводит пользователь. Например, если пользователь вводит имя пользователя 'user1', я хочу найти столбец имени пользователя в таблице пользователей базы данных, чтобы найти совпадение с именем пользователя.

Моя коллекция баз данных работает, и при использовании запроса (выберите * из пользователей;) я получаю правильную информацию, отображаемую в консоли. Когда я запускаю следующий запрос в PGAdmin или терминале, я получаю правильные результаты (выберите имя пользователя из пользователей, где username = 'user1';).

  • В приложении java User.getUserName () - это метод получения, который возвращает имя пользователя, заданное приложением, когда пользователю предлагается ввести свое имя пользователя на странице регистрации учетной записи.

Код следующий:

public static void isUniqueUser(String userName) {
    try {
        Class.forName("org.postgresql.Driver");
        Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/bigday", "postgres", "admin");
        PreparedStatement stmt = con.prepareStatement("select from users where username = " + User.getUserName());
        ResultSet rs = stmt.executeQuery();
        //if name found in db prompt name already taken
        while(rs.next()) {
            System.out.println("User Name: " + rs.getString(1) + "Password: " 
                    + rs.getString(2) + "Email: " + rs.getString(3) + "Phone: " + rs.getString(4));
        }

    }catch (Exception ex) {
        System.out.println(ex.getMessage());
    }
}

Когда я запускаю запрос в Eclipse, это то, что возвращается в консоли:

ОШИБКА: столбец "user1" не существует Положение: 36

1 Ответ

0 голосов
/ 28 апреля 2018

Вам нужно заключить в кавычки String' символами), или лучше использовать параметр связывания. И укажите несколько столбцов (или используйте сплат, *). Мол,

PreparedStatement stmt = con.prepareStatement("select * from users where username = ?");
stmt.setString(1,  User.getUserName());
ResultSet rs = stmt.executeQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...