今天做项目时遇到一个多重搜索的难题,主要是在搜索条件时,每个条件可以为空,又可以是like,或者>,<等,如果在页面实现的话会非常的麻烦(我还没想到更好的方法),关键是用到了这个:"select * from orders where 1=1",通过追加字符串的方式来拼接(此方法还有些不足,希望有人补充一下)。

参数说明:a 字段名

            b 字段值

            sb 初始sql语句

             c 操作符

 


 1 public void Ruentunsb(string a, string b, StringBuilder sb, string c)
 2     {
 3         if (b != "")
 4         {
 5             sb = sb.Append(" and ");
 6             sb = sb.Append(a);
 7             sb = sb.Append(" ");
 8             sb = sb.Append(c);
 9             if (c == "like")
10             {
11                 sb = sb.Append("' %");
12                 sb = sb.Append(b);
13                 sb = sb.Append("%'");
14             }
15 
16             else if (c == ">=")
17             {
18                 sb = sb.Append("'");
19                 sb = sb.Append(b);
20                 sb = sb.Append("'");
21             }
22             else if (c == "<=")
23             {
24                 sb = sb.Append("'");
25                 sb = sb.Append(b);
26                 sb = sb.Append("'");
27             }
28             else if (c == "=")
29             {
30                 sb = sb.Append(b);
31             }
32 
33         }        
34   protected void Button1_Click(object sender, EventArgs e)
35     {
36         StringBuilder sb = new StringBuilder("select * from orders where 1=1");
37         this.Ruentunsb("orders.Companyid",companyid,sb,"=");
38         Response.Write(sb);
39     }
40  不管有多少个文本框,只要每个调用一次即可
41   输出sql语句:select * from orders where 1=1 and orders.companyid=dddddd
42 

 

 

来源:http://www.cnblogs.com/xiaoweiqqcom/archive/2008/09/02/1282113.html

 

posted on 2008-09-03 15:00  8user  阅读(678)  评论(0编辑  收藏  举报