
String ss="SELETE * FROM MESSAGE WHERE"
int i=1char c='"'
if(na!=null)
{ss=ss+"AND 姓名='"+na+"'"i=0
System.out.println(ss)
}
if(se!="")
{
if(i==0){ss=ss+"AND 性别='"+se+"'"i=0}
else {ss=ss+"AND 性别='"+se+"'"i=1}
}
if(xi!="")
{
if(i==0){ss=ss+"AND 系别='"+xi+"'"i=0}
else {ss=ss+"AND 系别='"+xi+"'"i=1}
}
if(zh!="")
{
if(i==0){ss=ss+"AND 专业='"+zh+"'"i=0}
else {ss=ss+"AND 专业='"+zh+"'"i=1}
}
if(ni!="")
{
if(i==0){ss=ss+"AND 年级='"+ni+"'"}
else {ss=ss+"AND 年级='"+ni+"'"}
}
ss=c+ss+c
rs=sql.executeQuery(ss)
就拿第一个SQL语句来做示范,加入你的na值为abc,输出的SS是 SELETE * FROM MESSAGE WHEREAND 姓名= 'abc'
仔细一看就知道SQL语句上很严重的错误 WHERE 后面接了AND关键词
可以这样改:ss=ss+" " + "姓名='"+na+"'" +" " +"AND"
最后使用replaceAll('AND$', ")") 替换最后一个AND字符穿。或者使用字符创截取 去掉最后三个字符(AND)
一般多个条件的时候,处理方式是 select * from table where 1 = 1先写上这样一个条件,这样你以后的条件就可以直接用 if判断了,比如现在有A ,B 两个条件 就可以直接这样String sql = "select * from table where 1 = 1"
if( 条件A != null ){
sql += " and A =" + 条件A;
}
if( 条件B != null ){
sql += " and B =" + 条件B;
}
这样就可以避免多种情况存在的问题
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)