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'