最近比较困,中午十二点才起的,现在就已经有点头晕,真叫人头疼!前天晚上一直做组合查询功能,原想不过就是select * from where ..and...and 即能解决(新手啊,汗......),孰料搞了一晚上竟然查不出一条数据,原来查询代码思路是直接用where ..and ...and形式,当时也想到用户输入为空的情况,不过以为'%'+""+'%'情况不能剔除一些数据记录,直接来个想当然。当我测试程序时输入能符合条件的字段却一直未能提取出任何记录,纳闷! 仔细检查了select语句的写法,确认无误,依旧没有任何记录!尝试N次单步调,均无奈,一看时间已是凌晨4点,困得不行,只好暂时做罢!躺下后细想可能是null值问题引发,在查询管理器中使用相当条件却能正确检索出数据。 9:00pm,开始寻求思路,csdn中搜了一通才恍然大悟:'%'+null+'%'已经排除了所有数据记录,并是我想象的不排除任何数据记录,惭愧!当然搜不出任何记录,于是用多条if语句,对where ..and ..and 语句进行组合才得以解决问题。具体代码如下:
string searchstr="select * from Goods where CategoryID='"+cid+"'"; string stradd=null; if(name!="") stradd =" and GoodName like '%'+'"+name+"'+'%'"; if(au!="") stradd +=" and AutherName like '%'+'"+au+"'+'%'"; if(pre!="") stradd +=" and Press like '%'+'"+pre+"'+'%'"; if(num!="") stradd+=" and ISBN like '%'+'"+num+"'+'%'"; if(intro!="") stradd +=" and GoodDescription like '%'+'"+intro+"'+'%'"; searchstr +=stradd;