有这样的问题:
以学生姓名(模糊检索)、班级名、学院名为关键字,实现组合条件查询(包括单条件、多条件).结果用列表显示,且查询结果按一定的要求排序.我的想法是对于上述的三个字段设为textBox文本框,在后台判断用户是否在文本框中输入了值
之后对查询的SQL语句进行组合。但是三个字段,包括没有输入条件以及各种组合情况,判断项太多了,这样做是不是太笨了?
我的思想伪码如下:
if 三个文本框都为空
then sql=把数据库中所有信息全部显示
if 只输入了一个条件
then sql=相应的条件
if....
这样的判断就会太多。所以我想请问有没有其他的好方法来实现这个功能?
谢谢!

解决方案 »

  1.   

    string sql="select * from Tb where 1=1"
    sql+=string.IsNullOrEmpty(textbox1.Text)?"":"and name like '%"+textbox1.Text+"%'";
    或使用参数化
      

  2.   

    string a,b,c,d;
    a=string.Formart("name1={0},",TextBox1.Text);
    b=string.Formart("name2={0},",TextBox2.Text);
    c=string.Formart("name3={0}",TextBox3.Text);
    d=TextBox1.Text==""&&TextBox2.Text==""&&TextBox3.Text==""?"*":"";
    string sql=string.Formart(@"select {0}{1}{2}{3} from 表",a,b,c,d );string.Formart不建议在正规项目中使用
      

  3.   

    select * from db where (a="1") (b="2") (c=3) order by把括号中的值变成三个变量,如果a的值不为空则第一个有值否则无值,
               同理如果b的值不为空则第二个有值否则无值,
    ....
    再判断第一个有值的前面不加 and ,or,以后的要加。。