I think it's in your while loop at the end of your code.
Boolean b = it.hasNext();
%>
<% while(b)
{ Object[] row = (Object[])it.next();
%>
<option value="<%=(String) row[0]%>"><%=(String) row[0]%></option>
<%}
%>
Boolean b is only being checked once, not after each iteration of the loop like you intended.
Try this:
%>
<% while(it.hasNext())
{ Object[] row = (Object[])it.next();
%>
<option value="<%=(String) row[0]%>"><%=(String) row[0]%></option>
<%}
%>
Putting hasNext in the loop condition will make sure that it is checked each time through the loop.
I could be wrong though.