автозаполнение с использованием базы данных - PullRequest
0 голосов
/ 20 июня 2019

Я хочу использовать автозаполнение в inputTextArea. Я делаю это, используя значения из базы данных. У меня есть слова, цифры, символы (например, #), хранящиеся в базе данных.

Проблема в том, что когда я пытаюсь набрать текстовую область, появляется весь список вещей. Вместо этого я просто хочу, чтобы приходили только те параметры, которые соответствуют входным данным, записанным в textArea, своего рода функция автозаполнения, но она выбирает значения из базы данных. Ниже приведен код Java, который я написал до сих пор.

public class DbConnect {


    public List<String> completeArea(String query1) {

        ResultSet rs;
        Statement st;
        Connection con;
        PreparedStatement pst;
        List<String> result = new ArrayList<String>();
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/company", "root", "");

            try {
                query1 = "select name from labels";
                pst = con.prepareStatement(query1);
                rs = pst.executeQuery();
                while (rs.next()) {
                    result.add(rs.getString("name"));
                }
            } catch (Exception ex) {
                System.out.println(ex);
            }
        } catch (Exception ex) {
            System.out.println("error occured" + ex);
        }
        System.out.println("size is " + result.size());
        return result;
    }

Я не хочу указывать какую-либо конкретную букву для поиска в базе данных, она должна выбираться автоматически при вводе пользователем. Любая помощь будет полезна. Большое спасибо.

Ответы [ 2 ]

1 голос
/ 20 июня 2019

В вашем примере параметр query1 метода completeArea - это пользовательский ввод, но вы перезаписываете его своим запросом.Попробуйте с

public List<String> completeArea(String input) {
   ...
   String query = "select name from labels where name like ?";
   pst = con.prepareStatement(query);
   pst.setString(1, input + "%");
   ...
}

Отредактировано в соответствии с комментарием @Slaw.Спасибо за исправление.:)


Я бы использовал <p:autoComplete /> вместо inputTextArea для этого варианта использования.

Вы можете найти хороший учебник на официальном сайте PrimeFaces .

0 голосов
/ 20 июня 2019

Ваш запрос

select name from labels

, который даст имя всем ярлыкам ...

Я не хочу указывать какую-либо конкретную букву для поиска в базе данных, она должна выбираться автоматически при вводе пользователем. Любая помощь будет полезна.

Если вы хотите получить какое-либо соответствие, вы должны указать условие

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...