I have a resultSet that has a different number of results every time, and needs to be used multiple times on my page. Currently, I am storing my results in an ArrayList, and was planning to just loop through the arraylist. I dont know how many rows So this is what I have so far:
while (result.next()) {
tmpTerms.add(term = (((result_data = result.getObject("val_internal_code"))==null || result.wasNull())?" ":result_data.toString()));
tmpTerms.add(desc = (((result_data = result.getObject("val_external_representation"))==null || result.wasNull())?" ":result_data.toString()));
tmpTerms.add(sorter = (((result_data = result.getObject("sorter"))==null || result.wasNull())?" ":result_data.toString()));
tmpTerms.add(sDate = (((result_data = result.getObject("sDate"))==null || result.wasNull())?" ":result_data.toString()));
}
Okay, so when I run this, the system prints: Code:
[2011SP, Spring 2011, 1, 11-15-2010, 2011SU, Summer 2011, 1, 01-15-2011, 2011FL, Fall 2011, 1, 04-01-2011, 2010Q2, CE Qtr 2 2010 Dec - Feb, 2, 08-01-2010, 2011Q3, CE Qtr 3 2011 Mar - May, 2, 11-01-2010, 2011Q4, CE Qtr 4 2011 Jun - Aug, 2, 02-01-2011, 2011Q1, CE Qtr 1 2011 Sep-Nov, 2, 05-01-2011]
I dont know if this is the correct way of doing it or not, but it is working so far, so what I want to do now is use my allTerms arrayList, and separate them into rows, so I want to split every 4 results into a separate row. (So it would be 2011SP, Spring 2011, 1, 11-15-2010 as one row and so on), next, I would need to transfer these results to parts of a HTML page. so for ex:
<table class="t1">
<tr>
<td><!--Here I would want to show all rows from the allTerms arrayList with a "sorter" of 1--></td>
</tr>
</table>
<table class="t2">
<tr>
<td><!--Here I would want to show all rows from the allTerms arrayList with a "sorter" of 1 and a term of ....SU (where '....' is the year) --></td>
</tr>
</table>
That's not entirely right. You need to create a Javabean class which represents a single entity (read: a class which contains all column data of a single database row).
E.g.
public class Term {
private String code;
private String description;
private int sorter;
private Date date;
// Add/generate getters, setters, equals, hashcode and other boilerplate.
}
And populate it as follows:
List<Term> terms = new ArrayList<Term>();
// ...
while (resultSet.next()) {
Term term = new Term();
term.setCode(resultSet.getString("val_internal_code"));
term.setDescription(resultSet.getString("val_internal_representation"));
term.setSorter(resultSet.getInt("sorter"));
term.setDate(resultSet.getDate("sDate"));
terms.add(term);
}
// ...
request.setAttribute("terms", terms);
Then you can access it nicely using JSTL/EL.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<table class="t1">
<tr>
<td>
<c:forEach items="${terms}" var="term">
<c:if test="${term.sorter == 1}">
${term.code}, ${term.description}, ${term.date}
</c:if>
</c:forEach>
</td>
</tr>
</table>
<table class="t2">
<tr>
<td>
<c:forEach items="${terms}" var="term">
<c:if test="${term.sorter == 1 and fn:endsWith(term.code, 'SU')}">
${term.code}, ${term.description}, ${term.date}
</c:if>
</c:forEach>
</td>
</tr>
</table>
Unrelated to the problem, the way as you traversed the ResultSet didn't give me a strong feeling that the datamodel is properly been designed. Ensure that you're using the right column type for the data it holds. Ensure that you're putting the right non-null and key constraints on the columns. I'd also reconsider the column names and try to be more self-documenting and consistent.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With