使用TextFields查询Java SQL

时间:2016-09-22 16:18:20

标签: java sql

我写了一个SQL查询并使用textfield来获取数据。但是当文本字段为空时,它会提供所有数据。我怎么能阻止它?这是我的代码:

String sql = "select * from boek where naam like '%" 
           + txtNaam.getText() + "%' or auteur like '%"
           + txtAuteur.getText() + "%' or categorie like '%" 
           + txtCategorie.getText() + "%' or opleiding like '%"
           + txtOpleiding.getText() + "%' not opleiding like '%" 
           + txtOpleiding.getText() + "%' ";

3 个答案:

答案 0 :(得分:0)

怎么样 -

String sql = "select * from boek where ";
sql = addLike(sql, null, naam", txtNaam.getText());
sql = addLike(sql, "OR", auteur", txtAuteur.getText());
...


String addLike(String sql, String op, String col, String arg) {
if (arg != null && arg.length() > 0) {
    return sql + " " + (op == null ? "" : op) + " " + col + " like '%" + arg + "%' " ;
}

请原谅语法问题。 顺便说一句,您可能需要输入验证以避免SQL注入。

答案 1 :(得分:0)

您可以解决此问题的方法是在发送SQL查询之前检查文本字段是否为空。然后,如果它们全部填充,您可以发送查询,如果不是,则可以不发送。

以下是一些应该有效的代码示例:

if(!txtNaam.getText().equals("") && !txtAuteur.getText().equals("") && !txtCategorie.getText().equals("") && !txtOpleiding.getText().equals("") && !txtOpleiding.getText().equals("")){

    String sql = "select * from boek where naam like '%" + txtNaam.getText() + "%' or auteur like '%" 
        + txtAuteur.getText() + "%' or categorie like '%" + txtCategorie.getText() + "%' or opleiding like '%" 
        + txtOpleiding.getText() + "%' not opleiding like '%" + txtOpleiding.getText() + "%' ";

    //Execute query here

} else {

    //Code that will run if any values aren't available

}

希望这有帮助!

答案 2 :(得分:0)

我想您只想查询具有值的文本字段,并忽略其余的空字符。

我的建议是:

1)编写java逻辑以确定程序首先输入的内容。 例如作者,类别是选定的字段而非空。

2)运行专用的sql查询,以便于仅搜索所选的输入。 例如在这种情况下,SELECT仅使用作者和类别

因此,那里会有一些SQL查询。不仅是一个处理一切的人。在我看来,这将不那么令人困惑。希望它有所帮助:)