有五个(或者更多)框需要用户填入数据,但每个框用户都可以选择不填!然后根据用户填入的数据对数据库查询.根据排列组合的算法,五个框就有30种情况,最笨的方法就是用if语句对每个进行判断!现想看看各位有没有什么更好的方法了!

解决方案 »

  1.   

    case的话也麻烦啊,还有没有其它办法?
      

  2.   

    string sql = "select ... from ... where 1 = 1";
       
    if( TextBox1.Text.Length > 0 )
        sql = sql + " AND A='" + TextBox1.Text;
    if( TextBox2.Text.Length > 0 )
        sql = sql + " AND B='" + TextBox2.Text;
    if( TextBox3.Text.Length > 0 )
        sql = sql + " AND C='" + TextBox3.Text;
    if( TextBox4.Text.Length > 0 )
        sql = sql + " AND D='" + TextBox4.Text;
    ...让 AND 始终有效不就行了?
      

  3.   

    哈,上面拼接sql,写得有问题哈,每个后面都忘记写  + "'"; 了。
      

  4.   

    哪里需要30次...5个就5次够了........
    再说按排列组合应该是2的5次方是32吧..不是30.....楼主怎么算的?1个2种  --> 1 1     (填,不填)
    2个4种 ---> 1 2 1
    3个8种 ---> 1 3 3 1
    4个16种 --> 1 4 6 4 1
    5个32种 --> 1 5 10 10 5 1
    ............就算不会算总会看规律吧......  
    如果你用户输入的都是字符串并且都是模糊查询...直接 like '%.........%'  其中....是输入内容,他输不输随便他...不过小心注入.呵呵
      

  5.   

    用个函数来判断是否像是注入语句,然后再like那样写