求助 数据库查询问题 有几个下拉框 用户用来选择查询条件 可以选也可以不选 我的sql语句怎么写啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //都不为空时 if((RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) ) { sql = "select * from TM_BUS_SPECIAL_VIEW where LINE_NO = '"+RiZhi_line_no+"'" + "AND CREATE_TIME between to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ') and TRIM(TYPE_NAME) = '"+TYPE_NAME+"'"; } //线路号为空时 else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) ) { sql = "select * from TM_BUS_SPECIAL_VIEW where TRIM(TYPE_NAME) = '"+TYPE_NAME+"'" + "AND CREATE_TIME between to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ')"; //sql = "select * from TM_BUS_SPECIAL_VIEW"; } //信息类型为空时 else if((RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||!(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) ) { sql = "select * from TM_BUS_SPECIAL_VIEW where LINE_NO = '"+RiZhi_line_no+"'" + "AND CREATE_TIME between to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ')"; } else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||!(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) ) { sql = "select * from TM_BUS_SPECIAL_VIEW"; } else { sql = "select * from TM_BUS_SPECIAL_VIEW"; } return sql; }这是我写的 javabean 里面的 我把用户选择的参数传过去 在bean 里判断 可无论怎么操作 所执行的语句都是第一次查询的sql语句 该怎么办啊有没有别的好办法啊 if((RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) ) else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) ) 看看这两个条件!!!!TYPE_NAME!=null&&!TYPE_NAME.trim().equals(""))你用的||它当然执行第一个了!!!!下面也一样这是O的看法 前面你写的就不看了 太多 你应该换个思路 你应该有个默认状态 一般来说 用户不选择的话就默认所有 这是个思路问题你就这样做先定义一个String sql = select * from TM_BUS_SPECIAL_VIEW where 1=1;然后用户选择了第一个查询条件 假设RiZhi_line_noif (RiZhi_line_no!= null || !RiZhi_line_no.equals("")) { sql += " and LINE_NO=" + RiZhi_line_no;} 依此类推第二个if (TYPE_NAME!=null&&!TYPE_NAME.equals("")) { sql += " and TRIM(TYPE_NAME) = '"+TYPE_NAME + "'";}最后加上你的排序或者其他条件 sql += "order by yyyy";即可 chrome打印预览问题 jsp中session的问题 求助发布在web中的JasperRepor报表的例子 将动态URL地址改写的问题 新建JAVA技术交流群10606795,欢迎大家来坐坐 怎样操作一组单选框中某一个框 我的做了一个表单来处理让user给我留言 但是却不能处理中文字符~!!!????我该怎么办??? 在jsp中通过判断是否在时间段内决定显示按钮 关于JSTL的c:forEach的问题 Java服务器开发的过程中, 是否有必要将使用频率差距极大的接口分开放? 大家来说一说奇不奇怪?????? hibernate中的问题,等待高手~~~~~
if((RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )
{
sql = "select * from TM_BUS_SPECIAL_VIEW where LINE_NO = '"+RiZhi_line_no+"'" + "AND CREATE_TIME between to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ') and TRIM(TYPE_NAME) = '"+TYPE_NAME+"'";
}
//线路号为空时
else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )
{
sql = "select * from TM_BUS_SPECIAL_VIEW where TRIM(TYPE_NAME) = '"+TYPE_NAME+"'" + "AND CREATE_TIME between to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ')";
//sql = "select * from TM_BUS_SPECIAL_VIEW";
}
//信息类型为空时
else if((RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||!(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )
{
sql = "select * from TM_BUS_SPECIAL_VIEW where LINE_NO = '"+RiZhi_line_no+"'" + "AND CREATE_TIME between to_date('" + qishidate +"','yyyy-mm-dd ') and to_date('"+ zhongzhidate +"','yyyy-mm-dd hh24:mi:ss ')";
}
else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||!(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )
{
sql = "select * from TM_BUS_SPECIAL_VIEW";
}
else
{
sql = "select * from TM_BUS_SPECIAL_VIEW";
}
return sql;
}这是我写的
javabean 里面的
我把用户选择的参数传过去 在bean 里判断
可无论怎么操作 所执行的语句都是第一次查询的sql语句
该怎么办啊有没有别的好办法啊
else if(!(RiZhi_line_no!=null&&!RiZhi_line_no.trim().equals(""))||(TYPE_NAME!=null&&!TYPE_NAME.trim().equals("")) )
看看这两个条件!!!!
TYPE_NAME!=null&&!TYPE_NAME.trim().equals(""))你用的||它当然执行第一个了!!!!下面也一样这是O的看法
你就这样做
先定义一个
String sql = select * from TM_BUS_SPECIAL_VIEW where 1=1;
然后用户选择了第一个查询条件 假设RiZhi_line_no
if (RiZhi_line_no!= null || !RiZhi_line_no.equals("")) {
sql += " and LINE_NO=" + RiZhi_line_no;
}
依此类推
第二个
if (TYPE_NAME!=null&&!TYPE_NAME.equals("")) {
sql += " and TRIM(TYPE_NAME) = '"+TYPE_NAME + "'";
}
最后加上你的排序或者其他条件
sql += "order by yyyy";即可