我拼了半天都不对!郁闷的
就是一条select语句,
      select fileType,title,standardCode,memo,awardOrgan,infoId from H_Site_info where sendtype=0 order by filetype asc,paixu ascwhere后面还要加几个条件,要求是条件属性有值存在就加上,为空就不管,我拼得很郁闷,求教高手
     

解决方案 »

  1.   

    where后面还要加几个条件,要求是条件属性有值存在就加上,为空就不管
    一个简单的办法, where 写成 where 1 = 1 
    那么不管后面还有条件没, 都不用考虑是否拼 where 关键字了
      

  2.   

    where 1 = 1 ?
    那我的条件都去哪了?
      

  3.   

    这是我写的,不对
    ls_sql1 = "select fileType,title,standardCode,memo,awardOrgan,infoId from H_Site_info where sendtype=0 ";      ls_sql5 = " order by filetype asc,paixu asc";
          if(filetype!=null)
          ls_sql2 = "and filetype="+filetype+" ";
          else
          ls_sql2 =" ";
          if(xm!=null)
           ls_sql3 = "and title="+xm+" ";
          else
           ls_sql3="";
          
          if(sxzy!=null)
           ls_sql4 = "and memo="+sxzy+" ";
          else
         ls_sql4=" ";  
          String ls_sql=ls_sql1+ls_sql2+ls_sql3+ls_sql4;QueryDAO.executeQuery(String ): 关键字 'and' 附近有语法错误。;sql语句select fileType,title,standardCode,memo,awardOrgan,infoId from H_Site_info where sendtype=0 and filetype=04 and title= and memo= 
    java.sql.SQLException: 关键字 'and' 附近有语法错误。
      

  4.   

    select fileType,title,standardCode,memo,awardOrgan,infoId from H_Site_info where sendtype=0 order by filetype asc,paixu asc 
    加条件的话就在where sendtype=0 and 条件2 and ……。
    我不知道楼主是不是这个意思
      

  5.   

    改成这样应该就可以了,你要考虑传过来的值不一定是null而是为空值,and title= and memo=这个错误提示其实也很明显的告诉你哪里错了
      

  6.   

    将空值转化成空字符串 ""
    然后where (''=? or  条件1=? ) and (''=? or  条件2=?) and  (''=? or 条件3=?)
      

  7.   

    用StringBuffer拼接
    比如:
    StringBuffer ls_sql1 = new StringBuffer();ls_sqll.append("select fileType,title,standardCode,memo,awardOrgan,infoId from H_Site_info where sendtype=0 "); 
     
    if(filetype!=null && !filetyp.equals("")) 
          ls_sqll.append( "and filetype="+filetype+" "); 
    就不用后边那样连接字符串了
      

  8.   

    1>  where 1=1 之间再加参数的话不用判断是否前面有参数,直接
    if(username != null && !"".equals(username)){
        sql = sql + " and username = " + username;// 推荐使用?预编译,不要直接拼
    }2>  
      StringBuilder sql = new StringBuilder("select fileType,title,standardCode,memo,awardOrgan,infoId from H_Site_info ");
    List args = new ArrayList();
    if(username != null && !"".equals(username)){
        if(args.size() > 0){
            sql.append(" and username = ?");
        } else {
            sql.append(" where username = ?");
        }
        args.add(username);
    }
    // 然后遍历args,给参数赋值推荐使用第二种
      
      

  9.   

    你拼接的意思是不是说,在查询界面上有几个条件,然后只有不为空的时候,才会产生条件?
    如果是,那很简单,只要在当前sql语句下加一个where 1=1,这样就可以了,例如
    sql = select * from table_name where 1=1
    if(!userName.equals("")){
     sql += " and userName='"+userName+"'";
    }
    不知道你是不是这个意思