Я хочу добавить запятую в строку, которая извлекается из базы данных.
в нижнем коде я получаю сотрудника из базы данных, чья работа является учителем
вот мой код
<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>
Вы можете создать на 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
Как избежать Java-кода в JSP файлах?
Для работы с JSTL вам просто нужно поместить jstl-1.2.jar в /WEB-INF/lib
и в JSP
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Обновить ответ на комментарий
он не печатает результат.
Скрипты представляют собой raw java, встроенные в код страницы, и если вы объявляете переменные в своих сценариях, они становятся локальными переменными, встроенными в страницу.
Напротив, JSTL полностью работает с облачными атрибутами, либо на странице, и в запросе, либо в области сеанса.
Итак, для использования ArrayList empList
созданного в Scriptlets, вам нужно изменить код. см. этот ответ
<%
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 будет работать нормально.
Ссылки по теме
Вы можете использовать rs2.isLast()
, чтобы проверить, если текущий ResultSet
является последней записи и не добавлять ,
в этом случае. Это, однако, дорого, потому что драйвер JDBC будет выводить вперед одну строку, чтобы определить, является ли текущая строка последней строкой в наборе результатов.
Этого было бы достаточно.
<%
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%>
<% } %>