Java 将resultset结果与变量进行比较

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");%>

在java中比较一个变量和下一个结果集时,我遇到了一些困难。 就我而言,我希望: 如果临时变量=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();

%> 
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()的调用混合在一起