站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题求助 数据库查询问题

求助 数据库查询问题

摘要: 求助 数据库查询问题


有几个下拉框 用户用来选择查询条件 可以选也可以不选

我的sql语句怎么写啊




//都不为空时
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语句
该怎么办啊

有没有别的好办法啊


怎么没人啊


来了,
学习


来个强人吧


其实写这种东西挺折磨人的,我以前写过一个动态查询,费了好半天功夫,这种只是一个逻辑的问题,多试几次


我现在都快晕了


顶啊


lz调试一下不就知道你到底传的什么参数了?


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_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";

即可


↑返回目录
前一篇: 怎样屏蔽窗体的关闭按钮阿
后一篇: 求一个FileUpload上传照片的例子,大家帮忙啊