在比较变量和下一个结果集时,我在java中遇到了一些困难。 在我的情况下,我想: 如果temp变量= rs.next()则temp =“” 否则应显示rs.next()值。
这是因为我多次获取Tname字段,所以我想检索一次。
这是我的代码
while(rs.next()){
%>
<tr>
<td width="238">
<%temp=rs.getString("TNAME");%>
<%=temp%> </td>
<td><%=rs.getString("ID")%></td>
<%
if (rs.next().equals(temp){
temp="";
}
}
rs.close();
%>
答案 0 :(得分:0)
我认为你有两个问题:
rs.next()
重复循环,但在第二次rs.next()
来电时无意中再次跳转。temp
字符串与rs.next()
进行比较,而不是您感兴趣的特定字段。答案 1 :(得分:0)
ResultSet#next()
会返回boolean
,而不是包含您所追求的列值的String
。但是那时,你真的不想将光标移动到那里的下一行。当你回到while循环的开头时,你实际上已经跳过了一行。
您需要更改逻辑:将当前迭代name
与之前迭代的进行比较,并仅在不同时显示它。然后将当前迭代的name
存储为变量,以便在下一次迭代中对其进行比较。这是一个基于JSTL / EL的启动示例和一个虚构的List<Item>
,它作为${items}
存储在范围内:
<table>
<c:forEach items="${items}" var="item">
<tr>
<td><c:if test="${item.name != previousName}">${item.name}</c:if></td>
</tr>
<c:set var="previousName" value="${item.name}" />
</c:forEach>
</table>
如果你坚持使用它,你只需要自己将它翻译成老式的 scriptlet 。上述逻辑应该足够自我解释。