问题:
我正在从数据库中检索值,它将和主管和审查员的availabilityID
相匹配。但是,如果这两者之间没有availabilityID
匹配,则默认情况下availabilityID
将为0。
我在servlet中设置了一个条件,如果两个availabilityID
都为0,我想用查询选择的任何数字替换它。
我的servlet的一部分:
for (int i=0 ; i<studentID.length ; i++){
FreeBean free = new FreeBean();
free = GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i]);
nt SVavailableID = free.getAvailableID();
int EXavailableID = free.getAvailableID();
Date FreeDate = free.getFreeDate();
out.println("<td>"+ studentID[i]+"</td>");
out.println("<td> Hello </td>");
out.println("<td>"+ supervisorID[i] +"</td>");
out.println("<td>"+ examinerID[i] +"</td>");
out.println("<td>"+ SVavailableID+"</td>");
out.println("<td>"+ EXavailableID+"</td>");
out.println("<td>"+ FreeDate+"</td>");
out.println("</tr>");
if (SVavailableID ==0 && EXavailableID ==0 )
{
free= GenerateScheduleDAO.getOtherFree(supervisorID[i],examinerID[i]);
int otherSVavailableID = free.getAvailableID();
int otherEXavailableID = free.getAvailableID();
out.println("<tr>");
out.println("<td>"+ studentID[i]+"</td>");
out.println("<td> Hello </td>");
out.println("<td>"+ supervisorID[i] +"</td>");
out.println("<td>"+ examinerID[i] +"</td>");
out.println("<td>"+ otherSVavailableID+"</td>");
out.println("<td>"+ otherEXavailableID+"</td>");
out.println("<td>"+ FreeDate+"</td>");
out.println("</tr>");
}
}// student loop
我知道我的结果是这样的:
Student Name | Project Title | Supervisor Name | Examiner Name | Presentation 1 | Presentation 2 | Date
abc 1111 tan tin 0 0 1/1/16
abc 1111 tan tin 12 12 1/1/16
第一行显示,主管和审查员的availabilityID
均为0。因此,它将执行IF语句,并为它们找到另一个可能的availabilityID
。因此,它将复制一行,其中一行由0组成,另一行由新值组成。
如何用新值替换同时为0的行。或者至少在availabilityID
=0的情况下隐藏该行,并且只显示检索到的新值。有什么有效的方法吗?
我认为您所需要做的就是确保您只执行一个逻辑流。在正确的位置使用if
语句将使您实现这一点。
for (int i=0; i < studentID.length; i++) {
FreeBean free = new FreeBean();
free = GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i]);
int SVavailableID = free.getAvailableID();
int EXavailableID = free.getAvailableID();
Date FreeDate = free.getFreeDate();
// handle the edge case here
if (SVavailableID == 0 && EXavailableID == 0) {
free = GenerateScheduleDAO.getOtherFree(supervisorID[i],examinerID[i]);
SVavailableID = free.getAvailableID();
EXavailableID = free.getAvailableID();
}
// now print out each record only one time
out.println("<tr>");
out.println("<td>"+ studentID[i]+"</td>");
out.println("<td> Hello </td>");
out.println("<td>"+ supervisorID[i] +"</td>");
out.println("<td>"+ examinerID[i] +"</td>");
out.println("<td>"+ SVavailableID+"</td>");
out.println("<td>"+ EXavailableID+"</td>");
out.println("<td>"+ FreeDate+"</td>");
out.println("</tr>");
}
解决问题的另一种方法是让SQL查询为您处理双零值。