Как вставить базу данных sqlite и использовать динамический поиск в JAVA GUI JTable Swing?

Я использую блок try catch для фильтрации данных с sqlite database, у меня есть две проблемы, эта программа чувствительна к регистру, мне нужно, чтобы она не учитывала регистр, тогда она фильтрует данные только тогда, когда я пишу точное имя, указанное в базе данных. Пожалуйста, помогите сделать его динамическим фильтром.

    textFieldSearch = new JTextField();
    textFieldSearch.addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent arg0) {
            try {
            String query = "select sno,universityname,state,courses,applicationfees,deadline,admissionrequirment,undergrad,grad from UsaCollegeList where  state=? ";
            PreparedStatement pst = connection.prepareStatement(query);
            pst.setString(1, (String)textFieldSearch.getText());
            ResultSet rs=pst.executeQuery();

            table.setModel(DbUtils.resultSetToTableModel(rs));

            pst.close();

        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "error");
            e.printStackTrace();
        }
    }
    });

вы должны использовать state like ?, а не state =?. чувствительность к регистру, скорее всего, связана с sqlite stackoverflow.com/questions/15480319/…

guleryuz 04.05.2018 14:19

Спасибо большое, это сработало

udayan udaya 04.05.2018 14:28

Могу ли я использовать фильтр во всех столбцах базы данных вместо фильтрации только в состоянии?

udayan udaya 04.05.2018 14:32
select sno,universityname,state,courses,applicationfees,deadline,ad‌​missionrequirment,un‌​dergrad,grad from UsaCollegeList where state like ? or sno like ? or universityname like ? or courses like ? и так далее
guleryuz 04.05.2018 14:39

кажется, что он не работает, и нет сообщения об ошибке

udayan udaya 04.05.2018 14:48

работает только состояние первого столбца, остальное не сработало, я попытался изменить порядок, даже тогда, когда работает только первый столбец. пример: где состояние вроде? или сно нравится? -> в каком состоянии фильтруется

udayan udaya 04.05.2018 14:51

Мой проект почти готов, только эта последняя часть моего проекта занимает несколько дней .. Могу ли я использовать динамический фильтр?

udayan udaya 04.05.2018 15:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
7
196
3

Ответы 3

Вы можете сравнить это следующим образом:

        String query = "select sno,universityname,state,courses,applicationfees,deadline,admissionrequirment,undergrad,grad from UsaCollegeList where  upper(state)=? ";
        PreparedStatement pst = connection.prepareStatement(query);
        pst.setString(1, textFieldSearch.getText().toUpperCase());

Спасибо за исправление в коде, но раньше я пробовал использовать .toUpprCAse (), но это не сработало.

udayan udaya 04.05.2018 14:30

могу ли я добавить дополнительные столбцы для поиска, например, where upper (state, course) = ?;

udayan udaya 04.05.2018 14:40

Верхняя функция имеет String в качестве входных данных, поэтому вы можете использовать больше столбцов либо в одной String (например, конкатенация - || -), либо в большем количестве условий, таких как where upper(state) = ? and upper(course) = ?

mistyk 10.05.2018 13:50
String text = "%" + textFieldSearch.getText() + "%";

String query = "select sno,universityname,state,courses,applicationfees,deadline,admissionrequirment,undergrad,grad from UsaCollegeList where sno = ? or universityname = ? or state = ? or courses = ? or applicationfees = ? or deadline = ? or admissionrequirment = ? or undergrad = ? or grad = ? ";
PreparedStatement pst = connection.prepareStatement(query);
pst.setString(1, text);
pst.setString(2, text);
pst.setString(3, text);
pst.setString(4, text);
pst.setString(5, text);
pst.setString(6, text);
pst.setString(7, text);
pst.setString(8, text);
pst.setString(9, text);
ResultSet rs=pst.executeQuery();

Спасибо, мой друг, это работает, но текст нужно было преобразовать в строку в 'pst.setString (1, (String) text);'

udayan udaya 05.05.2018 05:54

Спасибо, дорогие друзья, все мне очень помогли, я выполнил свой проект.

    textFieldSearch = new JTextField();
    textFieldSearch.addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent arg0) {
            try {
                String text = "%" + textFieldSearch.getText() + "%";
                String query = "select sno,state from UsaCollegeList where sno like ? or state like ?";
                PreparedStatement pst = connection.prepareStatement(query);
                pst.setString(1, (String)text);
                pst.setString(2, (String)text);
                ResultSet rs=pst.executeQuery();

            table.setModel(DbUtils.resultSetToTableModel(rs));

            pst.close();

        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "error");
            e.printStackTrace();
        }
    }
    });

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