今天做项目时遇到一个多重搜索的难题,主要是在搜索条件时,每个条件可以为空,又可以是like,或者>,<等,如果在页面实现的话会非常的麻烦(我还没想到更好的方法),关键是用到了这个:"select * from orders where 1=1",通过追加字符串的方式来拼接(此方法还有些不足,希望有人补充一下)。
参数说明:a 字段名
b 字段值
sb 初始sql语句
c 操作符
Code
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