面临问题:
select a,b,c,d from tablename,主要就是这么一个语句。a,b,c,d字段由用户选择。如果都没有选择默认为select * from tablename.
现在就是每次添加都得判断用户是否已经有选择一个字段,
如果是,只需在字段后面接着判断,然后添加“,“+选择的字段内容变量+””;
否, 则添加“+选择的字段内容变量+”;应该有简便方案,但是我不知道怎么写啊?请指教!

解决方案 »

  1.   

    string sql="select * from 表名 where 1=1";if()
    {
    sql+=" and a=''";
    }else if
    {
     sql+=" and b=''";
    }else
    ....
      

  2.   

                string sql = " select ";
                int i=0;
                if()
                {    sql+="a";i=1;}
                if()
                {    sql+="b";i=1;}
                if()
                {    sql+="c";i=1;}
                if()
                {   sql+="d";i=1;}
                if(i==0)
                    sql+=" * from tablename ";
                else
                    sql+=" from tablename";
      

  3.   


    StringBuider sb = new StringBuilder();if( AIsSelected) sb.Append("a,");
    if( BIsSelected) sb.Append("b,");
    if( CIsSelected) sb.Append("c,");
    if( DIsSelected) sb.Append("d,");string FieldStr= sb.ToString();
    string DstFieldStr;
    if( string.IsNullOrEmpty(FieldStr) == true)
    {
       DstFieldStr = "*";
    }
    else
    {
       DstFieldStr = FieldStr.Remove(FieldStr.Length-1,1); // 删除最后一个逗号
    }string sql = string.Format("SElECT {0} FROM TableName",DstFieldStr); 
      

  4.   

    1L你是动态添加查询条件啊,不是添加查询字段啊。
    2L虽然有标记量,如果你的if条件都为真的话
    那你的SQL="select abcd from tablename";分割的逗号问题没解决啊。一般的思路就是2L那种思路,有没有简单点的方案啊?
      

  5.   

    一块写,比较麻烦,你把参数在业务层拼好了,查询的时候用5楼的方法
    string sql = string.Format("SElECT {0} FROM TableName",DstFieldStr);
    直接传DstFieldStr 就行了,页面层把DstFieldStr拼好,如果有选择就把字段拼到DstFieldStr里,用逗号分开,如果没有,就传 * 。
      

  6.   

    To ZFJ1981字段拼到DstFieldStr,这个就挺麻烦的,逗号问题。因为选择字段决定权在用户手上,得判断用户是否选择,然后还得判断是否加逗号。没有更优的解决方案?
      

  7.   


    void Method(string a,string b,string c,string d)
    {
    string Field = "", Comma = "";
    if (a != "")
    {
    Field += a;
    Comma = ",";
    }
    if (b != "")
    {
    Field += Comma + b;
    Comma = ",";
    }
    if (c != "")
    {
    Field += Comma + c;
    Comma = ",";
    }
    if (d != "")
    {
    Field += Comma + d;
    Comma = ",";
    }
    if (Field = "")
    {
    Field = "*";
    }
    string SQL = "select " + Field + " from table";
    }
      

  8.   

    select * from table 固定这一句,不拼column。显示的时候,不显示非选中字段即可。