java - 我如何动态修改 Java 中的 SQL 查询?

标签 java mysql

我正在制作一个包含搜索引擎功能的 Java 程序,以根据用户从组合框中选择的不同标准显示数据库中的记录。我需要能够根据用户选择的内容修改 SQL 查询的 WHERE 条件。如果他没有从组合框中选择任何值,则默认值为 WHERE=1,如果他从一个组合框中选择了条件,则覆盖该变量,因此 1 将其更改为 WHERE state=oklahoma 例如,他选择了 2 个或更多只是继续连接它们: WHERE state=oklahoma AND gender=male,等等,他设置了多少组合框。

我试过这样做,但我读到有一些库可以使这更容易,但我不知道,如果这可以用一个库来完成,请给它命名并显示代码来做到这一点

最佳答案

  1. 如果组合框编号 i 被选中,则 isSelected[i]=true

  2. 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/

相关文章:

mysql - MySQL 查询语法错误

php - 在存储到数据库之前批准信息?

java - 如何为应用程序创建简单的本地备份和恢复?

Java 返回 JSONArray

java - 如何让 java db sql 有一个 'Order by lastname' ?

java - 有没有办法从 IResourceDelta 获取 IJavaElementDelta 对象?

java - 从 Java servlet 中传入的 JSON 获取数据

sql - 需要根据一个表中的记录从多个表中进行选择

c# - 手动测试应用程序

php - 如何锁定 xampp 以防止文件被复制