只有第一个和第二个if时,两个条件任选一个都可以,但是加了第三个if,strSQL语句就变得只能同时查询两个条件不能单独只查一个了,为什么会这样呢?
if( request.getParameter("Lib") != null && request.getParameter("Capacity")=="")
{strSQL =strSQL + "where SpaceLibrary = '" + strLib + "'";}
if( request.getParameter("Lib") =="" && request.getParameter("Capacity")!=null)
{strSQL =strSQL + "where SpaceCap = '" + strCap + "'";}
if( request.getParameter("Lib")!=null && request.getParameter("Capacity")!=null)
{strSQL =strSQL + "where SpaceCap = '" + strCap + "' and SpaceLibrary = '" + strLib + "'";}

解决方案 »

  1.   

    两种方式第一种是在原始的strSql里加where,比如 where id>0,然后判断条件,如果符合条件则追加andstrSQL = strSQL + " where id>0"
    if( request.getParameter("Lib") != null && request.getParameter("Capacity")=="")
    {
    strSQL =strSQL + " and SpaceLibrary = '" + strLib + "'";
    }
    if( request.getParameter("Lib") =="" && request.getParameter("Capacity")!=null)
    {
    strSQL =strSQL + " and SpaceCap = '" + strCap + "'";
    }
    另一种是从新声明一个字符串用来生成条件,判断完毕后将新字符串附加到strSQL上string condition = string.Empty;
    if( request.getParameter("Lib") != null && request.getParameter("Capacity")=="")
    {
    condition = " where SpaceLibrary = '" + strLib + "'";
    }
    if( request.getParameter("Lib") =="" && request.getParameter("Capacity")!=null)
    {
    strSQL = (string.IsNullOrEmpty(condition)?" where":" and") + " SpaceCap = '" + strCap + "'";
    }
    strSQL = strSQL + condition