我正在制作一个包含搜索引擎功能的 Java 程序,以根据用户从组合框中选择的不同标准显示数据库中的记录。我需要能够根据用户选择的内容修改 SQL 查询的 WHERE 条件。如果他没有从组合框中选择任何值,则默认值为 WHERE=1,如果他从一个组合框中选择了条件,则覆盖该变量,因此 1 将其更改为 WHERE state
=oklahoma
例如,他选择了 2 个或更多只是继续连接它们: WHERE state
=oklahoma
AND 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();
关于java - 我如何动态修改 Java 中的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019907/