He creado una aplicación de base de datos usando Netbeans, GlassFish y JavaDB. Ahora mi código de Servlet del controlador ejecuta algunas consultas SQL dinámicas y obtiene un Conjunto de resultados (o puedo cambiar a String). Ahora, ¿cómo puedo mostrar el conjunto de resultados devuelto en un formato tabular (no tengo idea acerca de la estructura del conjunto de resultados). ¿Alguien puede ayudarme con esto?Cómo asignar un ResultSet con una cantidad desconocida de columnas a una lista y mostrarlo en una tabla HTML?
Respuesta
Puede usar Map<String, Object>
para representar una fila "dinámica", que es iterable en <c:forEach>
. Puede usar ResultSetMetaData
para recopilar información sobre las columnas, como column count y column labels.
Por lo tanto, esta asignación debe hacer:
List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
while (resultSet.next()) {
Map<String, Object> columns = new LinkedHashMap<String, Object>();
for (int i = 1; i <= columnCount; i++) {
columns.put(metaData.getColumnLabel(i), resultSet.getObject(i));
}
rows.add(columns);
}
para poder visualizarlo en JSP de la siguiente manera:
<table>
<thead>
<tr>
<c:forEach items="${rows[0]}" var="column">
<td><c:out value="${column.key}" /></td>
</c:forEach>
</tr>
</thead>
<tbody>
<c:forEach items="${rows}" var="columns">
<tr>
<c:forEach items="${columns}" var="column">
<td><c:out value="${column.value}" /></td>
</c:forEach>
</tr>
</c:forEach>
</tbody>
</table>
Gracias. Sin embargo, en la página JSP no puedo ver el conjunto de resultados. Lo que hice fue lo siguiente: request.setAttribute ("als", rows) en mi servlet y en JSP, rows = session.getAttribute ("als"); - ¿Falta algo? – alessandro
Simplemente use '$ {als}'. No escriba código Java en el archivo JSP. Su error es por la forma en que trató de obtenerlo como una sesión attribtue en lugar de como un atributo de solicitud. Lea en http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files y http://stackoverflow.com/questions/3106452/how-do-servlets-work- instanciaiation-session-variables-and-multithreading – BalusC
Lo siento pero añado Object rows = request.getAttribute ("$ {als}"). sin embargo, muestra filas variables no utilizadas. Y el problema sigue igual. – alessandro
Utilice los metadatos de resultados para saber el número de columnas devueltas por la consulta, el tipo de estas columnas, etc.
Ver the javadoc, que también tiene un ejemplo.
Gracias. Es agradable. – alessandro
- 1. Cómo asignar la lista de muchos a muchos en Hibernate con una tabla de enlaces
- 2. ¿Cómo se crea una tabla HTML con columnas ajustables?
- 3. ¿Asignar una lista de valores a una estructura en C#?
- 4. html css - ¿cómo crear una lista de columnas múltiples?
- 5. Analizando una estructura XML con una cantidad desconocida de recurrencias usando SAX
- 6. ¿Cómo puedo hacer que una lista de pares de nombre-valor aparezca como una tabla HTML?
- 7. ¿Cómo puedo obtener la lista de columnas en una tabla para una base de datos SQLite?
- 8. Cómo crear una tabla html con Jade iterando una matriz
- 9. LINQ para asignar una tabla de datos en una lista <MyObject>
- 10. Java - asignar una lista de objetos a una lista con los valores de su propiedad atributos
- 11. ¿Cómo asignar una lista a otra en python?
- 12. Cómo colocar una tabla HTML?
- 13. el modo de hacer un diccionario Python como una tabla HTML con columnas verticales
- 14. ¿Cómo crear una tabla en Android con múltiples columnas?
- 15. muchas-a-una con múltiples columnas
- 16. ¿Cómo pasar un parámetro a un javascript a través de una url y mostrarlo en una página?
- 17. Crear una tabla HTML con un repetidor ASP, repitiendo horizontal
- 18. asignar una lista de cadenas con JPA/Hibernate anotaciones
- 19. ¿Cómo cuento columnas de una tabla
- 20. Convierta datos json en una tabla html
- 21. Cómo convertir una tabla HTML en una matriz en python
- 22. Unir múltiples columnas en una tabla a una sola columna en otra tabla
- 23. Rellenar una lista de varias columnas
- 24. ¿Cómo asignar un resultado de selección a una variable?
- 25. Dar formato a una lista de texto en las columnas
- 26. ¿Cómo ocultar columnas en la tabla HTML?
- 27. Crear una tabla sin columnas
- 28. Cómo crear una tabla de tres columnas en ASP.Net Repeater
- 29. BeautifulSoup, un diccionario de una tabla HTML
- 30. SQL: Busque una lista de columnas con un valor determinado (dentro de una fila)
lo que problema tiene exactamente? obteniendo las filas del conjunto de resultados? generando una tabla HTML? muéstranos el código que tienes y dinos dónde estás atrapado. –
@JB Nizet, tengo un código como, - createStatement(); resultset rs = st.executeQuery (consulta sql). Ahora me quedé atrapado aquí. Cómo mostrar este conjunto de resultados en una tabla HTML. Como no tengo idea acerca de la consulta, no tengo idea acerca de la estructura del conjunto de resultados. – alessandro
@ BalusC, he visto su página de referencia. Pero, para aplicar product.setId (resultSet.getLong ("id")), tengo que saber cuántas columnas y qué tabla está devolviendo la declaración. No tengo idea de eso. – alessandro