一个数据库查询的问题
比如说我有一个学生表 
 我在查询的时候做了3个文本框,分别是按学号、姓名、入学时间查询 
 并且每个文本框上面都有一个控制它Enable属性的副选框,就是说如果选中这个副选框,那么它的文本框就可以使用,并且查询条件有它,反之就没有。你可以只按学号、姓名、入学时间中的一项查询,也可以选择两项或3项的交叉查询。 
             我是怎么做的:if   学号副选框   被选中,其他两个没被选中…… 
                                                       if   学号和姓名副选框被选种,入学时间没被选中…… 
             那这么太麻烦了,一共有7种情况,如果在多几条查询条件那不累死了,有没有简单的方法,比如写个函数什么的?! 
             我就想找一个简便的方法,并希望大家能给出代码
------解决方案--------------------在存储过程里处理 
 我写的  参考下 
 ======================================================= 
 ALTER   PROCEDURE Rp_Employees_Details 
 ( 
 @ORG_ID VARCHAR(100) ,--机构(必填) 
 @USER_TITLE VARCHAR(100),--岗位 
 @USER_ACTIVE varchar(40),--是否在职(1,在职) 
 @USER_WORK_LIMIT VARCHAR(100),--工作年限 
 @EDUCATETION CHAR(2),--受教育程度 
 @age_b varchar(50),--出生日期开始时间 
 @age_e varchar(50),--出生日期结束时间 
 @SEX CHAR(2)--性别 
 ) 
 as   
 declare @sqlWhere varchar(800),@sql varchar(800)  
 	set @sqlWhere =  ' where 1 = 1  ' 
 set @age_e = @age_e + ' 23:59:59 '   
 if(@ORG_ID <>  ' ') 
 begin 
 	if(@age_b  <>  ' ' and @age_e  <>  ' ') 
 		set @sqlWhere = @sqlWhere +  ' and USER_BIRTHDAY > = ' +  ' ' ' '+@age_b+ ' ' ' '+  ' and USER_BIRTHDAY  <= '+ ' ' ' '+@age_e+ ' ' ' ' 
 	if(@USER_TITLE <>  ' ' and @USER_TITLE  <>  '-1 ' ) 
 		set  @sqlWhere = @sqlWhere +  ' and USER_TITLE = '+ ' ' ' '+@USER_TITLE+ ' ' ' ' 
 	if(@USER_ACTIVE <>  ' ' and @USER_ACTIVE  <>  '-1 ' ) 
 	begin 
 		if(@USER_ACTIVE =  '01 ') 
 			set  @sqlWhere = @sqlWhere +  'and USER_ACTIVE = 1 ' 
 		else if(@USER_ACTIVE =  '02 ') 
 			set @sqlWhere = @sqlWhere +  'and USER_OUT = 1 ' 
 	end 
 	if(@ORG_ID  <>  '-1 ' ) 
 		set  @sqlWhere = @sqlWhere +  ' and ORG_ID = '+ ' ' ' '+@ORG_ID+ ' ' ' ' 
 	if(@USER_WORK_LIMIT <>  ' ' and @USER_WORK_LIMIT  <>  '-1 ' ) 
 		set  @sqlWhere = @sqlWhere +  ' and USER_WORK_LIMIT = '+ ' ' ' '+@USER_WORK_LIMIT+ ' ' ' ' 
 	if(@EDUCATETION <>  ' ' and @EDUCATETION  <>  '-1 ' ) 
 		set  @sqlWhere = @sqlWhere +  ' and USER_EDUCATION = '+ ' ' ' '+@EDUCATETION+ ' ' ' '  	  	 
 	set @sql =  ' 
 	select U.*,O.ORG_NAME,CE.CODE_NAME as 文化程度,CD_SEX.*,CS.*  from UR_USERS U 
 	left join (select ORG_ID,ORG_NAME from SYS_ORGANIZATION) O on USER_ORG_ID = ORG_ID 
 	left join CD_EDUCATION CE on CE.CODE_VALUE = USER_EDUCATION 
 	left join CD_SX CS on USER_ORIGIN = CS.CODE_VALUE COLLATE Chinese_PRC_CI_AS 
 	left join CD_SEX on U.USER_SEX = CD_SEX.CODE_VALUE COLLATE Chinese_PRC_CI_AS 
 	 ' 
 	+@sqlWhere 
 	print @sql 
 	exec (@sql) 
 end 
------解决方案--------------------string strSQL =  "select * from students where 1=1  ";   
 if(chx1.Checked) 
 strSQL +=string.Format( " and 学号= '{0} ' ",学号) 
 if(chx2.Checked) 
 strSQL +=string.Format( " and 姓名= '{0} ' ",姓名) 
 if(chx3.Checked) 
 strSQL +=string.Format( " and 入学时间= '{0} ' ",入学时间)   
 这样可以不考虑7种情况