2
有三個過濾器Class,Section和Date。現在有七個可能性:在Java中處理多個過濾器-MySql
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中的庫處理多個輸入查詢?
東西或其他...
有什麼可以做可能來處理這種情況與爲更少的代碼儘可能(考慮過濾器可能會添加上)?