Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java-MySql中处理多个过滤器_Java_Mysql_Sql_Filter - Fatal编程技术网

在Java-MySql中处理多个过滤器

在Java-MySql中处理多个过滤器,java,mysql,sql,filter,Java,Mysql,Sql,Filter,有三个过滤器类、节和日期。现在有七种可能性: 1-用户输入类 2-)用户输入部分 3-)用户输入日期 4-)用户输入日期和类别 等等 我编写了以下代码来处理java中的这些可能性: if( mySection.equals("0") && myClass.equals("0") && ( FDate.trim().compareTo("")==0 || TDate.trim().compareTo("")==0 ) ) { o

有三个过滤器类、节和日期。现在有七种可能性:

1-用户输入类

2-)用户输入部分

3-)用户输入日期

4-)用户输入日期和类别

等等

我编写了以下代码来处理java中的这些可能性:

if( mySection.equals("0") && myClass.equals("0") && ( FDate.trim().compareTo("")==0 || TDate.trim().compareTo("")==0    ) )
        {
        out.println("Note: Please provide valid filteration attributes. Atleast one filter is required.");
        return;
        }



        if( !mySection.equals("0") && myClass.equals("0") && ( FDate.trim().compareTo("")==0 || TDate.trim().compareTo("")==0    ) )
        {
            Query = "select st.rollno, concat(st.firstname,' ',st.midname,' ',st.lastname), st.level, st.section, st.rfidtag, sc.schoolname, sa.time, date_format(sa.time,'%T') from AAV.studentattendence sa, AAV.Students st, AAV.Schools sc where sa.studentindexptr=st.indexptr and sc.indexptr=st.schoolindexptr and st.section='"+mySection+"'";
        }

        if( !mySection.equals("0") && !myClass.equals("0") && ( FDate.trim().compareTo("")==0 || TDate.trim().compareTo("")==0    ) )
        {
            Query = "select st.rollno, concat(st.firstname,' ',st.midname,' ',st.lastname), st.level, st.section, st.rfidtag, sc.schoolname, sa.time, date_format(sa.time,'%T') from AAV.studentattendence sa, AAV.Students st, AAV.Schools sc where sa.studentindexptr=st.indexptr and sc.indexptr=st.schoolindexptr and st.section='"+mySection+"' and st.level='"+myClass+"' ";
        }


        if( mySection.equals("0") && !myClass.equals("0") && ( FDate.trim().compareTo("")==0 || TDate.trim().compareTo("")==0    ) )
        {
            Query = "select st.rollno, concat(st.firstname,' ',st.midname,' ',st.lastname), st.level, st.section, st.rfidtag, sc.schoolname, sa.time, date_format(sa.time,'%T') from AAV.studentattendence sa, AAV.Students st, AAV.Schools sc where sa.studentindexptr=st.indexptr and sc.indexptr=st.schoolindexptr and st.level='"+myClass+"' ";
        }


        if( mySection.equals("0") && myClass.equals("0") && ( !(FDate.trim().compareTo("")==0) && !(TDate.trim().compareTo("")==0)    ) )
        {
            Query = "select st.rollno, concat(st.firstname,' ',st.midname,' ',st.lastname), st.level, st.section, st.rfidtag, sc.schoolname, sa.time, date_format(sa.time,'%T') from AAV.studentattendence sa, AAV.Students st, AAV.Schools sc where sa.studentindexptr=st.indexptr and sc.indexptr=st.schoolindexptr and date_format(time,'%Y-%m-%d %T') between '"+FromDate+"'  and '"+ToDate+"'";
        }


        if( mySection.equals("0") && !myClass.equals("0") && ( !(FDate.trim().compareTo("")==0) && !(TDate.trim().compareTo("")==0)    ) )
        {
            Query = "select st.rollno, concat(st.firstname,' ',st.midname,' ',st.lastname), st.level, st.section, st.rfidtag, sc.schoolname, sa.time, date_format(sa.time,'%T') from AAV.studentattendence sa, AAV.Students st, AAV.Schools sc where sa.studentindexptr=st.indexptr and sc.indexptr=st.schoolindexptr and date_format(time,'%Y-%m-%d %T') between '"+FromDate+"'  and '"+ToDate+"' and st.level='"+myClass+"'";
        }


        if( !mySection.equals("0") && myClass.equals("0") && ( !(FDate.trim().compareTo("")==0) && !(TDate.trim().compareTo("")==0)    ) )
        {
            Query = "select st.rollno, concat(st.firstname,' ',st.midname,' ',st.lastname), st.level, st.section, st.rfidtag, sc.schoolname, sa.time, date_format(sa.time,'%T') from AAV.studentattendence sa, AAV.Students st, AAV.Schools sc where sa.studentindexptr=st.indexptr and sc.indexptr=st.schoolindexptr and date_format(time,'%Y-%m-%d %T') between '"+FromDate+"'  and '"+ToDate+"' st.section='"+mySection+"'";
        }


        if( !mySection.equals("0") && !myClass.equals("0") && ( !(FDate.trim().compareTo("")==0) && !(TDate.trim().compareTo("")==0)    ) )
        {
            Query = "select st.rollno, concat(st.firstname,' ',st.midname,' ',st.lastname), st.level, st.section, st.rfidtag, sc.schoolname, sa.time, date_format(sa.time,'%T') from AAV.studentattendence sa, AAV.Students st, AAV.Schools sc where sa.studentindexptr=st.indexptr and sc.indexptr=st.schoolindexptr and date_format(time,'%Y-%m-%d %T') between '"+FromDate+"'  and '"+ToDate+"' and st.section='"+mySection+"' and st.level='"+myClass+"'";
        }
问题是,当我添加另一个过滤器时,这些可能性会急剧增加,从而产生更多的查询和处理。 为了通过JAVA或MYSQL有效地处理这个问题,必须有一种方法

针对这种情况的通用sql语句

JAVA中处理多个输入查询的库

什么的


可以做些什么来尽可能少地使用代码来处理这种情况(考虑到过滤器可能会增加)

解决了,在思考了一段时间后,我找到了一个解决方案。以下是解决此问题的通用单一查询:

 if( mySection.equals("0") && myClass.equals("0") && ( FDate.trim().compareTo("")==0 || TDate.trim().compareTo("")==0    ) )
        {
        out.println("Note: Please provide valid filteration attributes. Atleast one filter is required.");
        return;
        }


        Query = "select st.rollno, concat(st.firstname,' ',st.midname,' ',st.lastname), st.level, st.section, st.rfidtag, sc.schoolname, sa.time, date_format(sa.time,'%T') from AAV.studentattendence sa, AAV.Students st, AAV.Schools sc where sa.studentindexptr=st.indexptr and sc.indexptr=st.schoolindexptr and ( '0'='"+mySection+"' or st.section='"+mySection+"') and ('0'='"+myClass+"' or st.level='"+myClass+"') and (  (' 00:00:00'='"+FromDate+"' and ' 23:59:59'='"+ToDate+"')  or (date_format(time,'%Y-%m-%d %T') between '"+FromDate+"'  and '"+ToDate+"' )  )";


executeQuery(Query);
当作为表达式处理时,默认值即“0”解析为true。在我的情况下,查询将变为泛型查询,我们可以根据需要添加任意数量的筛选子句