Tôi đã tạo một Ứng dụng Cơ sở dữ liệu bằng Netbeans, GlassFish và JavaDB. Bây giờ mã Servlet điều khiển của tôi thực hiện một số truy vấn SQL động và lấy lại một tập kết quả (hoặc tôi có thể chuyển đổi toString). Bây giờ, làm thế nào tôi có thể hiển thị tập kết quả trả về theo định dạng bảng (tôi không có ý tưởng về cấu trúc của tập kết quả). Ai có thể giúp tôi về điều này?Làm thế nào để ánh xạ một ResultSet với số lượng cột chưa biết đến một List và hiển thị nó trong một bảng HTML?
Trả lời
Bạn có thể sử dụng Map<String, Object>
để đại diện cho hàng "động", là iterable trong <c:forEach>
. Bạn có thể sử dụng ResultSetMetaData
để thu thập thông tin về các cột như column count và column labels.
Vì vậy, lập bản đồ này nên làm:
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);
}
Bạn có thể hiển thị nó trong JSP như sau:
<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>
Cảm ơn. Tuy nhiên, trong trang JSP tôi không thể thấy tập kết quả. Những gì tôi đã làm là như sau: request.setAttribute ("als", rows) trong servlet của tôi và trong JSP, rows = session.getAttribute ("als"); - Có gì còn thiếu không? – alessandro
Chỉ cần sử dụng '$ {als}'. Không viết mã Java trong tệp JSP. Sai lầm của bạn là bằng cách bạn đã cố gắng để có được nó như là một attribtue phiên thay vì như là một thuộc tính yêu cầu. Đọc trên http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files và http://stackoverflow.com/questions/3106452/how-do-servlets-work- instantiation-session-variables-and-đa luồng – BalusC
Xin lỗi nhưng tôi thêm đối tượng rows = request.getAttribute ("$ {als}"). tuy nhiên nó hiển thị các biến hàng không được sử dụng. Và vấn đề vẫn giữ nguyên. – alessandro
Sử dụng các siêu dữ liệu resultset biết số cột được trả về bởi các truy vấn, loại các cột vv
Xem the javadoc, mà cũng có một ví dụ.
Cảm ơn. Nó thật tuyệt. – alessandro
- 1. Làm thế nào để ánh xạ một lớp đối với nhiều bảng với SQLAlchemy?
- 2. Làm thế nào để ánh xạ một ArrayList của nguyên thủy vào một cột đơn?
- 3. Làm thế nào để ánh xạ một chuỗi đến một ngày trong automapper?
- 4. Làm cách nào để lấy số lượng cột từ một ResultSet JDBC?
- 5. Làm thế nào để ánh xạ một mảng với RestKit
- 6. Làm thế nào để ánh xạ một vector đến một phạm vi khác trong R?
- 7. Hibernate một đến số không hoặc một ánh xạ
- 8. Làm thế nào để có nhiều thực thể ánh xạ với một bảng?
- 9. Làm thế nào để ánh xạ một List vào một SelectList trong ASP.NET MVC bằng cách sử dụng AutoMapper?
- 10. Lưu loát NHibernate một đến nhiều ánh xạ một chiều
- 11. Slick, làm thế nào để ánh xạ một truy vấn đến một mô hình bảng kế thừa?
- 12. Làm thế nào để ánh xạ nhiều-nhiều danh sách trong Hibernate với một bảng liên kết
- 13. Hibernate - làm thế nào để ánh xạ một EnumSet
- 14. Làm thế nào để Transpose một resultset từ SQL
- 15. Sails.js - Ánh xạ một đến nhiều
- 16. Làm cách nào để hiển thị một ResultSet java một cách trực quan?
- 17. ánh xạ bản đồ một đến một trong bảng phân loại
- 18. Fluent NHibernate ánh xạ tham chiếu đến một cột không phải là cột ID
- 19. Làm thế nào để ánh xạ một bộ sưu tập trừu tượng với jpa?
- 20. Cách hiển thị tất cả các bộ điều khiển và ánh xạ trong một khung nhìn
- 21. Có nên có một bảng riêng biệt khi ánh xạ từ một đến nhiều mối quan hệ không?
- 22. DataGridView Binding vào một List <>, một số đặc tính nên không được hiển thị
- 23. Làm thế nào để ánh xạ mục đầu tiên trong một bộ sưu tập với AutoMapper
- 24. Trong clojure, làm thế nào để hợp nhất một số bản đồ kết hợp ánh xạ với cùng một khóa vào một danh sách?
- 25. Làm thế nào để ánh xạ nhiều hơn một thuộc tính với ActiveRecord?
- 26. Sử dụng HashMap để ánh xạ một Chuỗi và int
- 27. Làm thế nào để tùy chỉnh một cột và hiển thị còn lại trong activeadmin
- 28. Làm thế nào để tự động thêm một cột mới vào một bảng HTML
- 29. Làm thế nào để tạo và hiển thị một bảng tùy chỉnh trong ca cao?
- 30. Trong SQL, làm thế nào tôi có thể đếm số lượng giá trị trong một cột và sau đó xoay nó để cột trở thành hàng?
gì vấn đề là bạn có chính xác? gettings các hàng từ tập kết quả? tạo một bảng HTML? cho chúng tôi thấy mã bạn có và cho chúng tôi biết nơi bạn bị kẹt. –
@JB Nizet, tôi có một mã như, - createStatement(); resultset rs = st.executeQuery (truy vấn sql). Bây giờ tôi bị kẹt ở đây. Cách hiển thị tập hợp kết quả này trong bảng HTML. Vì tôi không có ý tưởng về truy vấn, tôi không có ý tưởng về cấu trúc tập kết quả. – alessandro
@ BalusC, tôi đã thấy trang của bạn bị thu hẹp. Nhưng, để áp dụng product.setId (resultSet.getLong ("id")) - điều này tôi phải biết có bao nhiêu colums và bảng nào là câu lệnh trả về. Tôi không có ý tưởng về điều đó. – alessandro