使用textfield在JTable上使用Autocomplete搜索Mysql数据库

问题描述 投票:0回答:1

你能否告诉我在我的代码中添加什么,以便当我在文本字段中输入一个字母时,在我完成输入之前,搜索结果已经开始在jtable上显示而不等我输入整个单词?

请在下面找到我在文本框中发布密钥发布事件的代码。谢谢您的帮助。

private void jTextFieldSearchKeyReleased(java.awt.event.KeyEvent evt) {                                             
   try{
        String selected=(String)jComboBoxSelected.getSelectedItem();
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/"
        + "employee_certificate","root","");

          String sql="SELECT stuff.Emp_Id,stuff.Emp_Name, stuff.Department, "
            + "certificate.Cert_Code, certificate.Cert_Name,\n" +
            "certificate.Cert, certificate.Vendor, certificate.Date_Taken, "
            + "certificate.Expiry_Date FROM stuff LEFT JOIN certificate"
              + " ON stuff.Emp_Id=certificate.Emp_Id  "
                + "WHERE "+selected+" =? ORDER BY stuff.Emp_Name\n" ;

  PreparedStatement  pstmt=con.prepareStatement(sql);
   pstmt.setString(1, jTextFieldSearch.getText());
     ResultSet rs=pstmt.executeQuery();
       jTable1.setModel(DbUtils.resultSetToTableModel(rs));
        pstmt.close();
           //con.close();
    }
    catch(Exception ex){ex.printStackTrace();} 
}                                            
java mysql swing autocomplete
1个回答
1
投票

经过两天的斗争终于得到了答案......我只需要使用LIKE'%'如图所示。没有人应该像我一样受苦

private void jTextFieldSearchKeyReleased(java.awt.event.KeyEvent evt) {                                         
    try{
        String selected=(String)jComboBoxSelected.getSelectedItem();
       Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+ "employee_certificate","root","");

          String sql="SELECT stuff.Emp_Id,stuff.Emp_Name, stuff.Department, "
            + "certificate.Cert_Code, certificate.Cert_Name,\n" +
            "certificate.Cert, certificate.Vendor, certificate.Date_Taken, "
            + "certificate.Expiry_Date FROM stuff LEFT JOIN certificate"
              + " ON stuff.Emp_Id=certificate.Emp_Id  "
               +"WHERE "+selected+" LIKE ? ORDER BY stuff.Emp_Name\n" ; 
       PreparedStatement  pstmt=con.prepareStatement(sql);
       pstmt.setString(1,jTextFieldSearch.getText() + "%");
       ResultSet rs=pstmt.executeQuery();
       jTable1.setModel(DbUtils.resultSetToTableModel(rs));

        pstmt.close();
        con.close();
    }
    catch(Exception ex){ex.printStackTrace();} 
}                                            
© www.soinside.com 2019 - 2024. All rights reserved.