我写了一个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() + "%' ";
答案 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查询。不仅是一个处理一切的人。在我看来,这将不那么令人困惑。希望它有所帮助:)