Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java搜索选项_Java_Sql_Oracle - Fatal编程技术网

Java搜索选项

Java搜索选项,java,sql,oracle,Java,Sql,Oracle,我有一个下拉列表,其中有列名称列表。当用户选择列名并输入serach值时,我会填充页面,但如果他们不输入搜索值,而是选择了一个下拉列名,我会尝试从表中获取所有内容。我试着这样做如果搜索值为null不要查找where子句直接转到else但这对我不起作用有人能告诉我我在这里做错了什么吗?多谢各位 sql.append(" SELECT id, name, dept, email"); if ((this.getSearch() != null)&& (this.getSelecte

我有一个下拉列表,其中有列名称列表。当用户选择列名并输入serach值时,我会填充页面,但如果他们不输入搜索值,而是选择了一个下拉列名,我会尝试从表中获取所有内容。我试着这样做如果搜索值为null不要查找where子句直接转到else但这对我不起作用有人能告诉我我在这里做错了什么吗?多谢各位

sql.append(" SELECT id, name, dept, email");

if ((this.getSearch() != null)&& (this.getSelected().equals("1"))){
    sql.append("  from table ");
    sql.append("  where id = '");
    sql.append(this.getSearch());
    sql.append("'");
}else if ((this.getSearch() != null)&& (this.getSelected().equals("2"))){
    sql.append("  from table ");
    sql.append("  where name = '");
    sql.append(this.getSearch());
    sql.append("'");
}else{
    sql.append("  from table ");
}

可能
this.getSearch()
不会返回
null
,而是返回空字符串或包含空格字符的字符串之类的内容。您已经清理过该字符串了吗?

每当处理从我没有编写的代码返回的字符串时,我通常先检查NULL,然后检查零长度字符串:

String str = myClass.getMyString();
if (str == null || str.length() < 1) {
  /* Failure case */
} else {
  /* Success case */
}
String str=myClass.getMyString();
如果(str==null | | str.length()<1){
/*失败案例*/
}否则{
/*成功案例*/
}

上面的代码假设返回值方法说明长度为零的字符串是一种失败模式,因此请记住。

有一个工具用于此,称为调试器。

请不要使用StringBuilder生成查询。这是一个SQL注入漏洞。@请使用准备好的语句来降低一些风险。StringBuilder不是真正的问题,问题在于插入变量。因此,更简洁的注释应该是“使用PreparedStatement插入”this.getSearch()“数据。除此之外,用户还可以使用String、StringBuffer、StringBuilder……等等!