【发布时间】:2018-10-17 00:52:04
【问题描述】:
我想做一个包含多个 Java Swing 组件的搜索功能,用户可以通过(姓名/国籍/专业/经验)进行搜索,结果将显示在 Jtable 中。
我只在 SQL 查询中苦苦挣扎,好像用户只输入了一个“名称”,不会检索任何数据,因为它像这样(名称、空、空、空)进入数据库而我没有我的数据库中有任何空值。
所以我想检索具有该名称的所有数据,而不考虑其他列,但同时,如果他们还选择了特定专业,例如,我想检索具有所选名称和专业的所有数据,依此类推.
希望你能理解我的问题。
我当前的 SQL 语句:
public ArrayList<Applications> getData(String name, String nationality, String specialty, String experience) {
ArrayList<Applications> list = new ArrayList<Applications>();
Connection con = getConnection();
Statement st;
ResultSet rows;
try {
st = con.createStatement();
rows = st.executeQuery("SELECT * FROM applications WHERE name LIKE '%" + name+"%'"
+ " AND (nationality LIKE '" + nationality+"')"
+ " AND (specialty LIKE '" + specialty+"')"
+ " AND (experience LIKE '" + experience+"')");
Applications applications;
while(rows.next()) {
applications = new Applications(
rows.getInt("id"),
rows.getString("name"),
rows.getString("nationality"),
rows.getString("Specialty"),
rows.getString("experience")
);
list.add(applications);
}
} catch (SQLException ex) {
Logger.getLogger(MyQuery.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}
【问题讨论】:
-
您可以根据条件创建查询,例如如果国籍不为空,则将“AND (nationality LIKE '" + nationality+"')”附加到您的查询等等..
-
根据您向我们展示的内容,即使您返回的值是
null或为空,您也不会调整您的请求。此外,按照您编写的方式,所有条件都必须有效才能取回数据。