我正在制作一个Java程序,它包含一个搜索引擎特性,根据用户从组合框中选择的不同标准显示数据库中的记录。我需要能够根据用户选择的内容修改SQL查询的WHERE条件。如果他没有从组合框中选择任何值,则默认值为WHERE=1,如果他从一个组合框中选择了条件,则覆盖变量,以便1将其更改为WHEREstate=oklahoma,例如,他选择2个或更多,只需将它们串联起来:WHEREstate=oklahomagender=male,依此类推。
我试过这样做,但我读过一些库可以使这更容易,但我不知道,如果这可以用库来完成,请命名并显示代码

最佳答案

如果选择了组合框编号i,则isSelected[i]=true
content[i]是组合框编号i的值。
第一种解决方案

PreparedStatement ps = (PreparedStatement) con.prepareStatement
                       (“SELECT username, password FROM users WHERE
                            state LIKE ? AND gender LIKE ?″); // AND ...



for(int i=0; i<n; i++) // n number of combo boxes
   if (!isSelected[i])
      ps.setString(i+1,"%");
    else
      ps.setString(i+1,content[i]);
 ResultSet rs=ps.executeQuery();

第二种解决方案
PreparedStatement ps = (PreparedStatement) con.prepareStatement
                   (“SELECT username, password FROM users WHERE (? OR
                        state=?) AND (? OR gender=?)″); // AND ...

for(int i=0; i<n; i++) {// n number of combo boxes
    ps.setString(2*i+1,content[i]);
    ps.setBoolean(2*i+2,isSelected[i]);
 }
 ResultSet rs=ps.executeQuery();

09-25 22:14