java - 根据搜索字段将条目从 MySQL 加载到 Java 表中

标签 java mysql search

我有一个 MySQL 表,其中已有条目,并且我已将其连接到我的 Java 程序,因此每当程序运行时它都会显示表值。我基本上试图实现一个搜索字段,用户可以在其中键入任何属性的值,并且与该值匹配的所有条目都将加载到表中。然后,用户将能够选择匹配的正确条目,并且可以编辑或更新该条目的信息。这对我很有用,特别是当您有具有相同值的条目时,例如名字、姓氏或邮政编码。

try {
        String sql = "SELECT * FROM donors WHERE donor_id = ?";
        ps = conn.prepareStatement(sql);
        ps.setString(1, txtSearch1.getText());
        rs = ps.executeQuery();
        tblDonors.setModel(DbUtils.resultSetToTableModel(rs));
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    } 

    try {
        String sql = "SELECT * FROM donors WHERE first_name = ?";
        ps = conn.prepareStatement(sql);
        ps.setString(1, txtSearch1.getText());
        rs = ps.executeQuery();
        tblDonors.setModel(DbUtils.resultSetToTableModel(rs));
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }

搜索字段仅搜索第二个查询,而不搜索第一个查询,因此我可以输入名称,匹配的名称将加载到表中,但当我尝试输入 ID 号时,没有任何反应。我对此相当陌生,但我认为这与我的结果集对象有关?但不太确定。任何帮助都会很棒。

最佳答案

这里发生的是第二个结果覆盖第一个结果。我认为最简单的解决方案是在 where 子句中使用 or ,如下所示:

String sql = "SELECT * FROM donors WHERE (donor_id = ?) or (first_name = ?)";
ps.setString(1, txtSearch1.getText());
// but of course there are 2 ?'s now, we have to give the value to the second one
// as well
ps.setString(2, txtSearch1.getText());

由于占位符在 JDBC 中的工作方式,您必须为每个 ? 提供一个值。

关于java - 根据搜索字段将条目从 MySQL 加载到 Java 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14927269/

相关文章:

java - 在 Java Eclipse WindowBuilder 中的 2 个 JCheckBox 对象之间画一条线

mysql - 使用合并后尝试删除重复的数据行

java - Parse.com 搜索 (Android) - 直接搜索

ruby - Chef : no implicit conversion of String into Integer TypeError

mysql - 使用 PHPMYADMIN 更新

android - 横向模式下的自动完成 TextView - 下拉菜单上的键盘

java - 如何在 intellij 中设置 android 源代码?

java - Apache Camel 将 XML 路由和 beans 从文件加载到 CamelContext 中

java - 如何将连接传递给 Mybatis

sql - 涉及包含数学运算符的列名的 MySQL 查询