如何通过使用Where COLERY从MySQL表中显示从JTEXTFIELD到JTable的搜索查询



我正在尝试通过jtextfield从MySQL表显示搜索结果,但是在我单击"按钮"的按钮之后,它在JTable中没有显示,我想知道为什么,请帮助我解决此错误,谢谢:(

MouseClicked上的按钮代码:

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){
        }
    }

程序的图像

欢迎来到stackoverflow:(

拨打以下内容时,错误正在发生:

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

但是,您的选择语句是:

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

即。您的getint正在尝试获得从未选择的列的值,因此不在结果集中。

getint的定义行为是扔一个 SQLException,您可以捕获但不要记录它或任何东西。

解决方案是:

1(修改您的选择以检索所有列

2(添加一些记录等,以正确处理sqlexception

3(条款'%" + inp_npm.getText() + "%'"正在向SQL注入攻击打开您的SELECT语句,因此使用准备陈述来生成您的语句。

相关内容

  • 没有找到相关文章

最新更新