想做一个组合式的查询,这样可以么?C#和asp.net

yingming77 2003-12-23 02:35:52
事情是这样的,有五个选项,就是姓名,生日范围,顾客ID,地址,购货金额这些,
我为了把不同的情况分开就象下面那样,给分成了32中不同情况写的,分32条的时候
用的是1,10,100,1000,10000,的和的不同情况分开的。
希望能够根据输入的不同,而去选择不同的记录集,我这样做是不是可以?特别想知道比较专业的做法是什么?我这个还没调试成呢,也不知道是不是我写的sql语句不对呀?希望给点建议,你们是如何做的呢?盼望回复


string select1="";//这里想实现组合查询
string select2="";
string select3="";
string select4="";
string select5="";
string wherestring="";
long fenlei=0;
if(name.Text.Trim()!=null)
{
select1="姓名="+name.Text.Trim();
fenlei+=1;

}
if(gustid.Text.Trim()!=null)
{
select2="顾客ID="+gustid.Text.Trim();
fenlei+=10;
}
if(jine.Text.Trim()!=null)
{
select3="购货金额 >"+jine.Text.Trim();
fenlei+=100;
}
if(l_bir.Text!=null&&h_bir.Text!=null)
{
select4="生日>="+l_bir.Text.Trim()+"<="+h_bir.Text.Trim();
fenlei+=1000;
}
if(instr.Text.Trim()!=null)
{
select5="地址 like %"+instr.Text.Trim()+"%";
fenlei+=10000;
}
switch (fenlei)
{
case 00000:{wherestring="";break;}
case 00001:{wherestring="where"+select1;break;}
case 00010:{wherestring="where"+select2;break;}
case 00011:{wherestring="where"+select1+"&&"+select2;break;}
case 00100:{wherestring="where"+select3;break;}
case 00101:{wherestring="where"+select3+"&&"+select1;break;}
case 00110:{wherestring="where"+"&&"+select3+"&&"+select2;break;}
case 00111:{wherestring="where"+select3+"&&"+select2+"&&"+select1;break;}
case 01000:{wherestring="where"+select4;break;}
case 01001:{wherestring="where"+select4+"&&"+select1;break;}
case 01010:{wherestring="where"+select4+"&&"+select2;break;}
case 01011:{wherestring="where"+select4+"&&"+select1+"&&"+select2;break;}
case 01100:{wherestring="where"+select4+"&&"+select3;break;}
case 01101:{wherestring="where"+select4+"&&"+select3+"&&"+select1;break;}
case 01110:{wherestring="where"+select4+"&&"+select3+"&&"+select2;break;}
case 01111:{wherestring="where"+select4+"&&"+select3+"&&"+select1+"&&"+select2;break;}
case 10000:{wherestring="where"+select5;break;}
case 10001:{wherestring="where"+select5+"&&"+select1;break;}
case 10010:{wherestring="where"+select5+"&&"+select2;break;}
case 10011:{wherestring="where"+select5+"&&"+select2+"&&"+select1;break;}
case 10100:{wherestring="where"+select5+"&&"+select3+"&&"+select1;break;}
case 10101:{wherestring="where"+select5+"&&"+select3+"&&"+select1;break;}
case 10110:{wherestring="where"+select5+"&&"+select3+"&&"+select2;break;}
case 10111:{wherestring="where"+select5+"&&"+select3+"&&"+select1+"&&"+select2;break;}
case 11000:{wherestring="where"+select5+"&&"+select4;break;}
case 11001:{wherestring="where"+select5+"&&"+select4+"&&"+select1;break;}
case 11010:{wherestring="where"+select5+"&&"+select4+"&&"+select2;break;}
case 11011:{wherestring="where"+select5+"&&"+select4+"&&"+select2+"&&"+select1;break;}
case 11100:{wherestring="where"+select5+"&&"+select4+"&&"+select3;break;}
case 11101:{wherestring="where"+select5+"&&"+select4+"&&"+select3+"&&"+select1;break;}
case 11110:{wherestring="where"+select5+"&&"+select4+"&&"+select3+"&&"+select2;break;}
case 11111:{wherestring="where"+select5+"&&"+select4+"&&"+select3+"&&"+select2+"&&"+select1;break;}
}
...全文
37 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingming77 2003-12-23
  • 打赏
  • 举报
回复
非常谢谢!用的是winwang168写的,佩服佩服。问题解决了,高兴!
winwang168 2003-12-23
  • 打赏
  • 举报
回复
string select1="";//这里想实现组合查询
string select2="";
string select3="";
string select4="";
string select5="";
string wherestring="where ";
long fenlei=0;
if(name.Text.Trim()!=null)
{
wherestring+="姓名="+name.Text.Trim() + " and ";

}
if(gustid.Text.Trim()!=null)
{
wherestring+="顾客ID="+gustid.Text.Trim() + " and ";
}
if(jine.Text.Trim()!=null)
{
wherestring+="购货金额 >"+jine.Text.Trim() + " and ";
}
if(l_bir.Text!=null&&h_bir.Text!=null)
{
wherestring+="生日>="+l_bir.Text.Trim()+"<="+h_bir.Text.Trim() + " and ";
fenlei+=1000;
}
if(instr.Text.Trim()!=null)
{
wherestring+="地址 like %"+instr.Text.Trim()+"%" + " and ";
}

wherestring = wherestring.Substring( 0 ,wherestring.Length - 5);
最后一句去除最后的" and "连接符

ahui_net 2003-12-23
  • 打赏
  • 举报
回复
string str姓名;
string str生日范围;
string str顾客ID;
string str地址;
string str购货金额;

//.... 赋值

str姓名 = (str姓名 == "") ?"姓名" : "'"+ str姓名 +"'";
str生日范围 = (str生日范围 == "") ?"生日范围" : "'"+ str生日范围 +"'";
str顾客ID = (str顾客ID == "") ?"顾客ID" : "'"+ str顾客ID +"'";
str地址 = (str地址 == "") ?"地址" : "'"+ str地址 +"'";
str购货金额 = (str购货金额 == "") ?"购货金额" : "'"+ str购货金额 +"'";

string strSQL = "select * from Table where 姓名 = "+ str姓名 +" and 生日范围 = "+ str生日范围 +" and 顾客ID = "+ str顾客ID +" and 地址 = "+ str地址 +" and 购货金额 = "+ str购货金额;

以上虽然简单,但是会出现SQL攻击

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧