将结果集结果与变量进行比较

时间:2010-10-03 11:33:52

标签: java jsp jdbc

在比较变量和下一个结果集时,我在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();

%> 

2 个答案:

答案 0 :(得分:0)

我认为你有两个问题:

  1. 您正在使用rs.next()重复循环,但在第二次rs.next()来电时无意中再次跳转。
  2. 您将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 。上述逻辑应该足够自我解释。