Java 基于用户输入的多条件搜索
我目前正在从事一个小项目,该项目涉及使用JDBC连接到一个小型MySQL数据库。它是一个小应用程序,有多个JTextFields和一些jcombox,可用于向数据库添加新用户、更新用户、删除用户和搜索用户 当用户按下“查找”按钮时,应该能够运行搜索,并查看用户填写的字段,然后根据这些字段构建查询。例如,用户根据名字和姓氏搜索某人:Java 基于用户输入的多条件搜索,java,design-patterns,Java,Design Patterns,我目前正在从事一个小项目,该项目涉及使用JDBC连接到一个小型MySQL数据库。它是一个小应用程序,有多个JTextFields和一些jcombox,可用于向数据库添加新用户、更新用户、删除用户和搜索用户 当用户按下“查找”按钮时,应该能够运行搜索,并查看用户填写的字段,然后根据这些字段构建查询。例如,用户根据名字和姓氏搜索某人: String query = SELECT * FROM members WHERE firstName = ... and Surname = ... 当程序检测
String query = SELECT * FROM members WHERE firstName = ... and Surname = ...
当程序检测到用户已经用要搜索的数据填写了这些字段时,firstName和姓氏字段被追加
我的问题是,我正试图找到一种有效的方法,能够搜索出多个条件,而不会以反模式箭头结束。我不希望我的代码看起来像:
if( firstName.getText().length() > 0 )
{
do_something();
if( lastName.getText().length() > 0 )
{
do_something();
if( email.getText().length() > 0 )
{
do_something();
}
}
}
等等…但到目前为止,这是我能想到的唯一方法,这将是可怕的,因为搜索条件的可能组合。我在考虑也许做一个开关,这可能会有帮助,但我不知道什么基地关闭开关
任何帮助都将不胜感激 如果您使用java.awt.panel,您可以尝试以下方法
for(Component component : myPanel.getComponents()) {
if(component instanceof JTextField) {
JTextField textField = (JTextField) component;
buildYourSearchQuery(textField.getText());
}
}
为什么需要嵌套“if”语句?您可以简单地重复调用appendtoquerystring,并在其中检查长度。对于一个甚至不存在该方法的方法,我应该更改它。第二,为什么它们不需要嵌套呢?您是否还需要进行测试以查看用户是否填写了字段并进行了追加?它们不应该嵌套。根据上面的代码,如果用户没有给出名字,那么您将忽略他提供的姓氏和电子邮件。