我正在制作一个Java程序,它包含一个搜索引擎特性,根据用户从组合框中选择的不同标准显示数据库中的记录。我需要能够根据用户选择的内容修改SQL查询的WHERE条件。如果他没有从组合框中选择任何值,则默认值为WHERE=1,如果他从一个组合框中选择了条件,则覆盖变量,以便1将其更改为WHEREstate
=oklahoma
,例如,他选择2个或更多,只需将它们串联起来:WHEREstate
=oklahoma
和gender
=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();