0

データベースから取得した文字列にコンマを追加したい。

以下のコードでは、仕事が教師であるデータベースから従業員を取得しています

ここに私のコードがあります

<td>
    <% 
       sql2 = "SELECT empname FROM users WHERE job = ? ";
       ps2 = connection.prepareStatement(sql2);
       ps2.setString(1, jobname);
       rs2 = ps2.executeQuery();

         while (rs2.next()){ 
              String emp= rs2.getString("empname");
     %>                        
      <%=emp%> 

    <% } %>
</td>
4

3 に答える 3

1

次のArrayListで作成できますempname

ArrayList<String> empList = new ArrayList<String>();
while (rs2.next())
{ 
   String emp= rs2.getString("empname");
   empList.add(emp);                  
}

次に、 JSTLを使用できます isLast()

<c:forEach items="${empList}" var="empName" varStatus="loop">
   <c:out value="${empName}" />
   <c:if test="${!loop.last}">,</c:if>
</c:forEach>    

isLast()メソッドを使用できますResultSetが、JSP でスクリプトレットを使用しないことをお勧めしますJSP-Files で Java コードを回避する方法を
参照してください。

JSTL を使用するには、jstl-1.2.jarを JSP内/WEB-INF/lib
および JSP 内に配置するだけです。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  

コメントへの回答を更新する

結果を印刷しません。

スクリプトは、ページ コードに埋め込まれた生の Java であり、スクリプトで変数を宣言すると、それらはページに埋め込まれたローカル変数になります。

対照的に、JSTL は、ページ、リクエスト、またはセッション スコープのいずれかで、スコープ属性で完全に機能します。
そのため、スクリプトレットで作成されたArrayList を使用empListするには、コードを変更する必要があります。この回答を参照してください

<%
 ArrayList<String> empList = new ArrayList<String>();
 while (rs2.next())
 { 
   String emp= rs2.getString("empname");
   empList.add(emp);                  
 }
 pageContext.setAttribute("empList", empList);//pageContext is implicit object available
%>  

上記の JSTL コードは正常に動作します。

関連リンク

于 2013-10-22T12:40:43.840 に答える
0

rs2.isLast()現在ResultSetが最後のレコードであるかどうかを確認するために使用でき,、その場合は追加しません。ただし、現在の行が結果セットの最後の行であるかどうかを判断するために、JDBC ドライバーが 1 行先にフェッチするため、これにはコストがかかります。

于 2013-10-22T12:36:22.800 に答える
0

これで十分でしょう..

<% 
   sql2 = "SELECT empname FROM users WHERE job = ? ";
   ps2 = connection.prepareStatement(sql2);
   ps2.setString(1, jobname);
   rs2 = ps2.executeQuery();
   boolean b = rs2.last();
    int numberOfRecords = 0;
   if(b){
   numberOfRecords = rs.getRow();
   System.out.println(numberOfRecords);
     }
rs = stmt.executeQuery(sql);
 while (rs.next()){ 
      if(numberOfRecords>1)
      {
      String emp= rs.getString("bank")+",";

      }
      else
      {

      String emp=rs.getString("bank");

      }
      numberOfRecords--;
 %>                        
  <%=emp%> 

<% } %>
于 2013-10-22T12:39:25.663 に答える