2010-10-03 138 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

相關問題