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

您可以在 e 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 中使用 scriptlet
查看如何避免 JSP-Files 中的 Java 代码?

要使用 JSTL,您只需将jstl-1.2.jar放入/WEB-INF/lib
JSP 中 即可

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

更新评论的答案

它不打印结果。

脚本是嵌入在页面代码中的原始 java,如果您在脚本中声明变量,那么它们将成为嵌入在页面中的局部变量。

相比之下,JSTL 完全使用范围属性,无论是在页面、请求还是会话范围。
因此,要使用在 Scriptlets 中创建的 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

这样就够了。。

<% 
   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 回答
0

您可以使用rs2.isLast()检查当前ResultSet是否是最后一条记录,并且在这种情况下不要添加,。然而,这样做代价高昂,因为 JDBC 驱动程序将提前获取一行以确定当前行是否是结果集中的最后一行。

于 2013-10-22T12:36:22.800 回答