日期:2014-05-17 浏览次数:20832 次
StringBuffer sb = new StringBuffer("select * from tableName where 1>0");
if(null!=id){
sb.append(" and id='"+id+"'");
}
if(null!=name){
sb.append(" and name='"+name+"'")
}
------解决方案--------------------
在查询前构建查询的字符串,可以专门定义一个类。比如你有很多查询条件,假设是jsp页面,在jsp页面里面把要查询的类型(int String 默认),其它类型均转化为String类型进行传递;在自定义的类里面用if判断是否为空,如果不为空得到值用%like,如果为空要判断一下,是不查询这个条件,还是默认查询,这根据实际情况。而对于int之类的数值类型,可以用javascript在jsp设置默认值来处理不输入int值的情况。然后根据if条件构建一个字符串str,然后传入专门的查询方法里面,可以用1=1 + str 的方式。----这是基本的作法,希望对你有所帮助。
------解决方案--------------------
动态组织SQL语句
如果Id不为空,则sql语句中加上id的查询条件
如果用户名不为空,则sql语句中加用户名的查询条件
String sql = "select * from user "
StringBuilder sb = new StringBuilder(" where 1=1 ");
if (null != id) {
sb.append(" and id=查询的值");
}
if (null != 用户名) {
sb.append(" and 用户名=查询的值");
}
------解决方案--------------------
我的笨办法是:
假如传来的值如下:
text1
text2
······
String sql="select * from 表名 where 1=1 ";
String s1="";
String s2="";
········
if(text1!=null)
{
s1="and 字段1='"+text1+"'";
}
if(text2!=null)
{
s2="and 字段2='"+text2+"'";
}
·········
sql=sql+s1+s2+········;