多条件搜索时sql语句的自动生成

时间:2021-02-14 05:38:22

 

        写这篇短文是因为要做一个多条件用户搜索(类似于QQ查找里的高级查找,可选择条件,并且存在一个不限的条件),发现如果写为存储过程,也是逃不过根据条件自动生成正确的sql语句这一关的,所以就写了下面的代码。如果谁还有更好的方法,欢迎赐教

以下代码在.net2005    XP系统下测试通过


多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成 ///这是一个生成sql语句where子句的逻辑
多条件搜索时sql语句的自动生成            
///用于多条件搜索的sql语句
多条件搜索时sql语句的自动生成            
///这里是三个条件
多条件搜索时sql语句的自动生成            
///如果要用5个条件,则只需修改temp1和temp2数组还有for的循环次数

多条件搜索时sql语句的自动生成             string  sql  =   " select userName,sex,user_age,user_city from [user] " ;
多条件搜索时sql语句的自动生成            
string  clause  =   "  where  " ;
多条件搜索时sql语句的自动生成            
// string temp = "user_age between=",
多条件搜索时sql语句的自动生成
             string  tempValue1  =   " all " ;
多条件搜索时sql语句的自动生成            
string  tempValue2  =   " all " ;
多条件搜索时sql语句的自动生成            
string  tempValue3  =   " 3' and '4 " ; // 在前面先给这个字符串符值,用于拼接betwwen后面的字符串
多条件搜索时sql语句的自动生成

多条件搜索时sql语句的自动生成
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成            
string [] temp1  =   "sex=""user_city=""user_age between=" } ; // 条件的变量名
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成
             string [] temp2  =   { tempValue1, tempValue2, tempValue3 } ; // 条件的变量值,对应temp1数组
多条件搜索时sql语句的自动生成

多条件搜索时sql语句的自动生成            
int  n  =   0 ;
多条件搜索时sql语句的自动生成
多条件搜索时sql语句的自动生成
多条件搜索时sql语句的自动生成            
for  ( int  i  =   0 ; i  <   3 ; i ++ )
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成            
{
多条件搜索时sql语句的自动生成                
//temp = Console.ReadLine();
多条件搜索时sql语句的自动生成
                if (temp2[n] == "all")
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成                
{
多条件搜索时sql语句的自动生成                    n
++;
多条件搜索时sql语句的自动生成                    
continue;
多条件搜索时sql语句的自动生成                }

多条件搜索时sql语句的自动生成                
else
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成                
{
多条件搜索时sql语句的自动生成                    
if (clause == " where ")
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成                    
{
多条件搜索时sql语句的自动生成                        
//clause += " and ";
多条件搜索时sql语句的自动生成
                        clause += temp1[n];
多条件搜索时sql语句的自动生成                        clause 
+= "'";
多条件搜索时sql语句的自动生成                        clause 
+= temp2[n];
多条件搜索时sql语句的自动生成                        clause 
+= "'";
多条件搜索时sql语句的自动生成                        n
++;
多条件搜索时sql语句的自动生成                    }

多条件搜索时sql语句的自动生成                    
else
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成                    
{
多条件搜索时sql语句的自动生成                        clause 
+= " and ";
多条件搜索时sql语句的自动生成                        clause 
+= temp1[n];
多条件搜索时sql语句的自动生成                        clause 
+= "'";
多条件搜索时sql语句的自动生成                        clause 
+= temp2[n];
多条件搜索时sql语句的自动生成                        clause 
+= "'";
多条件搜索时sql语句的自动生成                        n
++;
多条件搜索时sql语句的自动生成                    }

多条件搜索时sql语句的自动生成                }

多条件搜索时sql语句的自动生成            }

多条件搜索时sql语句的自动生成
多条件搜索时sql语句的自动生成
多条件搜索时sql语句的自动生成            
if  (temp2[ 0 !=   " all "   ||  temp2[ 1 !=   " all "   ||  temp2[ 2 !=   " all " )
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成            
{
多条件搜索时sql语句的自动生成                sql 
+= clause;
多条件搜索时sql语句的自动生成                Console.WriteLine(sql.ToString());
多条件搜索时sql语句的自动生成            }

多条件搜索时sql语句的自动生成            
else
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成            
{
多条件搜索时sql语句的自动生成                Console.WriteLine(sql.ToString());
多条件搜索时sql语句的自动生成            }

多条件搜索时sql语句的自动生成            sql 
+=  clause;
多条件搜索时sql语句的自动生成            Console.WriteLine(clause.ToString());
多条件搜索时sql语句的自动生成
多条件搜索时sql语句的自动生成            
string  userName  =   " user&&area &sex&online&camera&key " ;
多条件搜索时sql语句的自动生成            
string [] strGroup  =  userName.Split( ' & ' );
多条件搜索时sql语句的自动生成            
foreach  ( string  a  in  strGroup)
多条件搜索时sql语句的自动生成多条件搜索时sql语句的自动生成            
{
多条件搜索时sql语句的自动生成                
if (a != "")
多条件搜索时sql语句的自动生成                    Console.WriteLine(a.ToString());
多条件搜索时sql语句的自动生成            }

多条件搜索时sql语句的自动生成