面临问题:
select a,b,c,d from tablename,主要就是这么一个语句。a,b,c,d字段由用户选择。如果都没有选择默认为select * from tablename.
现在就是每次添加都得判断用户是否已经有选择一个字段,
如果是,只需在字段后面接着判断,然后添加“,“+选择的字段内容变量+””;
否, 则添加“+选择的字段内容变量+”;应该有简便方案,但是我不知道怎么写啊?请指教!
select a,b,c,d from tablename,主要就是这么一个语句。a,b,c,d字段由用户选择。如果都没有选择默认为select * from tablename.
现在就是每次添加都得判断用户是否已经有选择一个字段,
如果是,只需在字段后面接着判断,然后添加“,“+选择的字段内容变量+””;
否, 则添加“+选择的字段内容变量+”;应该有简便方案,但是我不知道怎么写啊?请指教!
{
sql+=" and a=''";
}else if
{
sql+=" and b=''";
}else
....
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";
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);
2L虽然有标记量,如果你的if条件都为真的话
那你的SQL="select abcd from tablename";分割的逗号问题没解决啊。一般的思路就是2L那种思路,有没有简单点的方案啊?
string sql = string.Format("SElECT {0} FROM TableName",DstFieldStr);
直接传DstFieldStr 就行了,页面层把DstFieldStr拼好,如果有选择就把字段拼到DstFieldStr里,用逗号分开,如果没有,就传 * 。
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";
}