java - 使用在 JTable 上的 JTextfield 中键入的名字或姓氏搜索 MYSQL 数据库过滤

标签 java mysql swing

我想使用姓氏或名字从数据库中过滤 JTable 上显示的结果,这样当我在 JTextfield 中键入 Nikola 或 Tesla 时,具有其中一个名字的行将被过滤。

我将名称作为一个字段存储在数据库中,即“Nikola Tesla”,当我键入 Nikola 时,它工作正常,而当我键入 Tesla 时,它没有显示任何结果。

我有一个名称字段用于存储两个名称。

我不想有单独的 First_Name 和 Last_Name 字段。

请建议我应该在下面显示的代码中添加什么:

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();
    }
}

最佳答案

您还需要在 jTextFieldSearch.getText() 之前添加 %。见下文

pstmt.setString(1, "%"+ jTextFieldSearch.getText() + "%");

关于java - 使用在 JTable 上的 JTextfield 中键入的名字或姓氏搜索 MYSQL 数据库过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38476349/

相关文章:

java - 字符串上的切换函数

java - 如何使用 jamod 库在 Java 中实例化 Register 对象?

MySQL 对 comaprison 运算符 (!=/<>) 的奇怪行为,即 NotEqualTo

java - 如何使用从表中选择数据,进行计算,然后将新数据更新到与第一个主键相同的另一个表中?

java - 我如何检测java中何时访问文件夹或文件?

PHP MySQL insert in float(3,1) 总是得到十进制的 "0"

php - MySQL 和 PHP 重复打印

Java GUI 帮助(JFrame、JButton 等)

java - 倒计时器,在 JLabel 中显示秒数时出错

java - JDK7 和原生组件的焦点问题