Java 将resultset结果与变量进行比较
在java中比较一个变量和下一个结果集时,我遇到了一些困难。 就我而言,我希望: 如果临时变量=rs.next(),则temp=“” 否则应显示rs.next()值 这是因为我多次获得Tname字段,所以我想检索一次 这是我的密码Java 将resultset结果与变量进行比较,java,jsp,jdbc,Java,Jsp,Jdbc,在java中比较一个变量和下一个结果集时,我遇到了一些困难。 就我而言,我希望: 如果临时变量=rs.next(),则temp=“” 否则应显示rs.next()值 这是因为我多次获得Tname字段,所以我想检索一次 这是我的密码 while(rs.next()){ %> <tr> <td width="238"> <%temp=rs.getString("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();
%>
while(rs.next()){
%>
我认为您有两个问题:
rs.next()
迭代循环,但第二次调用rs.next()
时无意中再次跳转temp
字符串与rs.next()
进行比较,而不是比较您感兴趣的特定字段布尔值
,而不是一个字符串
,该字符串包含您要查找的列值。但仍然如此,您确实不想将光标移动到下一行。返回while循环的开头时,实际上跳过了一行
您需要更改逻辑:将当前迭代的名称
与之前迭代的名称进行比较,并仅在不同时显示。然后将当前迭代的名称
存储为变量,以便在下一次迭代中进行比较。下面是一个基于JSTL/EL和虚构的列表
的启动示例h存储为范围中的${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>
${item.name}
如果你坚持使用它,你只需要自己将它翻译成老式的scriptlets。上面的逻辑应该足够自我解释。你想要什么(我想)还不是很清楚。上面的内容只是基于你当前解决方案中一些明显的问题。如何将具有tname的temp与rs进行比较。next()对于下一个tname,将所有tname提取到一个列表中,然后在单独的状态下迭代这些tname可能更简单,而不是将比较与对rs.next()的调用混合在一起