2010-10-03 93 views
0

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

%> 

回答

0

ResultSet#next()返回boolean,不是String包含列值你之后。但仍然是,你真的不想把光标移动到那里的下一行。当你回到while循环的开始时,你已经有效地跳过了一行。

您需要更改的逻辑:比较目前迭代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> 

你只需要,如果你在使用它坚持把它翻译成老式小脚本自己。上面的逻辑应该足以自我解释。

0

我认为你有两个问题:

  1. 你通过你的循环使用rs.next()迭代却在不经意间被你的第二个电话rs.next()再次跳跃。
  2. 你比较你的temp字符串rs.next()而不是你所感兴趣的特定领域。
+0

那么,该怎么做 – maas 2010-10-03 11:40:57

+0

这不是很清楚(我认为)你想要什么。以上只是基于当前解决方案中一些显而易见的明显问题。 – 2010-10-03 11:42:32

+0

如何将具有tname的temp与rs.next()进行比较以用于下一个tname – maas 2010-10-03 11:44:33

相关问题