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