Java 用户t1、t2、…、的SQL查询,where子句中的tm术语

Java 用户t1、t2、…、的SQL查询,where子句中的tm术语,java,sql,user-input,Java,Sql,User Input,用户提供字符串作为术语的输入,它们可以是t1,…tm现在我必须嵌入这些t1,。。。sql where子句中的tm。 从term=t1或term=t2。。。。。。术语=tm 目前,我正在将字符串拆分为字符串数组: String[]terms=term.split(\\s+); 对于(int i=0;i我假设,因为您是按空格分割的,所以用户的输入如下: document word explanation 首先使用trim()删除term中的任何前导空格 然后在for循环中,将数组的所有项用单引号括

用户提供字符串作为术语的输入,它们可以是
t1,…tm
现在我必须嵌入这些
t1,。。。sql where子句中的tm
。 从
term=t1
term=t2。。。。。。术语=tm

目前,我正在将字符串拆分为字符串数组:

String[]terms=term.split(\\s+);

对于(int i=0;i我假设,因为您是按空格分割的,所以用户的输入如下:

document word explanation
首先使用
trim()
删除
term
中的任何前导空格
然后在
for
循环中,将数组的所有项用单引号括起来(虽然这不是构造查询的安全方法,但可以使用准备好的语句和
占位符):


假设输入字符串类似于
t1、t2、t3
,下面给出了一些您应该考虑的事项:

  • 拆分后修剪值
  • 使用
    StringBuilder
    (而不是字符串)连接循环中的文本
  • 下面给出了一个示例代码和输出:

    public class Main {
        public static void main(String[] args) {
            String term="t1, t2, t3";   
            String[] terms = term.split(",");  
            StringBuilder sb=new StringBuilder();
             for (int i =0; i<terms.length; i++) {
                 if (i == terms.length -1) {
                     sb.append("term = '" + terms[i].trim()+"'");
                }
                else {
                    sb.append("term = '" + terms[i].trim() + "' OR ");
                }
             }
             System.out.println(sb);
        }
    }
    
    但是,对于参数化查询,我建议使用
    PreparedStatement
    而不是
    Statement
    。有关详细信息,请编辑并发布。谢谢您使用的是哪种产品?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请查看您正在使用的数据库产品
    postgresql
    oracle
    sql server
    db2
    。。。
    term = 'document' OR term = 'word' OR term = 'explanation'
    
    public class Main {
        public static void main(String[] args) {
            String term="t1, t2, t3";   
            String[] terms = term.split(",");  
            StringBuilder sb=new StringBuilder();
             for (int i =0; i<terms.length; i++) {
                 if (i == terms.length -1) {
                     sb.append("term = '" + terms[i].trim()+"'");
                }
                else {
                    sb.append("term = '" + terms[i].trim() + "' OR ");
                }
             }
             System.out.println(sb);
        }
    }
    
    term = 't1' OR term = 't2' OR term = 't3'