Как отобразить поисковый запрос из поля jtext в таблицу jtable из таблицы mysql с помощью запроса Where Clause - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь показать результаты поиска из таблицы mysql через поле jtext, но после того, как я нажал кнопку, в jtable она не отображается. Мне интересно, почему, пожалуйста, помогите мне решить эту ошибку, спасибо:)

Код кнопки мыши при нажатии:

private void btn_cariMouseClicked(java.awt.event.MouseEvent evt) {                                      
        if(!inp_npm.getText().isEmpty()){
            show_item_in_searchTbl();
        } else {
            JOptionPane.showMessageDialog(null, "Please fill the empty text!");
        }
    }

 public void show_item_in_searchTbl(){
        try{
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zazu_school","root",""); 
            Statement st = conn.createStatement();
            String query = "SELECT NPM FROM daftar_mahasiswa WHERE NPM LIKE '%" + inp_npm.getText() + "%'";
            ResultSet rs;
            rs = st.executeQuery(query);
            DefaultTableModel model = (DefaultTableModel)src_mhs_tbl.getModel();
            while(rs.next()){
                Object[] kolom = new Object[3];
                kolom[0] = rs.getInt("ID");;
                kolom[1] = rs.getString("Nama");
                kolom[2] = rs.getString("NPM");
                kolom[3] = rs.getString("Jurusan");

                model.addRow(kolom);
            }
            conn.close();
        } catch(SQLException ex){

        }
    }

образ программы

1 Ответ

0 голосов
/ 07 июля 2019

Добро пожаловать в StackOverflow:)

Ошибка возникает при вызове следующего:

kolom[0] = rs.getInt("ID");

Тем не менее, ваше утверждение Select:

        String query = "SELECT NPM FROM daftar_mahasiswa WHERE NPM LIKE '%" + inp_npm.getText() + "%'";

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

Определенное поведение для getInt состоит в том, чтобы бросить SQLException, который вы ловите, но не регистрируете его или что-то в этом роде.

Решение:

1) измените ваш SELECT, чтобы получить все столбцы

2) Добавьте некоторые логи и т. Д. Для правильной обработки SQLException

3) Предложение '%" + inp_npm.getText() + "%'" открывает оператор Select для атак с использованием SQL-инъекций, поэтому вместо этого сгенерируйте оператор с помощью PreparedStatement.

...