如何从JSP文件遍历ResultSet



我在servlet文件中有一个简单的语句,它将遍历数据库并获得结果集

ResultSet AssignmentList = stmt.executeQuery("SELECT * FROM Assignments WHERE " + projectID + "= Pid;");
request.setAttribute("assignmentList", AssignmentList);

如您所见,我正在将ResultSet发送到JSP文件。在这个JSP文件中,我尝试像这样遍历它。

<table class="CSSTableGenerator">
    <thead>
    <tr>
        <th>Aid</th>
        <th>Title</th>
        <th>Task</th>
        <th>ID of User Responsible</th>
    </tr>
    </thead>
    <tbody>
    <c:forEach items="${assignmentList}" var="item">
        <tr>
            <td>${item.Aid}</td>
            <td>${item.Title}</td>
            <td>${item.Task}</td>
            <td> ${item.UserID}</td>            
        </tr>
    </c:forEach>
    </tbody>
</table>

但是当我这样做时,我得到一个错误。我是否应该以错误的方式迭代,或者不可能迭代ResultSet

JSP中有一个名为Results的类,它可以满足您的需求。您可以从ResultSet构造它,您可以关闭ResultSet和连接,并且Results有一个Iterable数组,其中的行本身就是映射。

读取ResultSet后,我们需要关闭数据库连接。因为在JSP中读取ResultSet,所以只能在JSP中关闭连接。在我看来,这不是一个好的做法。

在servlet中查询数据库后,读取ResultSet,将结果存储在List中,然后关闭数据库连接。然后,在请求属性中将这个List传递给JSP。JSP使用EL从请求属性中检索List。您可以使用JSTL来遍历这个List。

您可以尝试使用SQL标记库,它是为在JSP页面中访问数据库而设计的。

我已经分享了一种从mysql数据库获取值的方法,以便在JSP (JAVA)中显示)以及可能对您有所帮助的示例代码。

Logic:只需从Servlet中的数据库中获取数据,并将数据填充到POJO类中,并将所有记录的最终列表设置为请求属性,最后将请求转发到JSP页面。

假设您有一个相当标准的ItemBean(我使一切字符串,除了投影)。然后,我可能会从DAO助手方法中的PreparedStatement开始,如下所示

private static List<ItemBean> queryForItems(
    Connection conn, int projectId) {
  PreparedStatement ps = null;
  ResultSet rs = null;
  // The Query is using a bind parameter
  final String ITEM_SQL = "SELECT * FROM Assignments WHERE Pid = ?";
  // This is the Diamond Operator... if pre Java 7, use new ArrayList<ItemBean>();
  List<ItemBean> al = new ArrayList<>();
  try {
    // Prepare the statement
    ps = conn.prepareStatement(ITEM_SQL);
    ps.setInt(1, projectId); // <-- bind the parameter
    rs = ps.executeQuery();
    while (rs.next()) { // <-- "Iterate" the ResultSet
      ItemBean ib = new ItemBean();
      ib.setPid(projectId);
      ib.setAid(rs.getString("Aid"));
      ib.setTitle(rs.getString("Title"));
      ib.setTask(rs.getString("Task"));
      ib.setUserId(rs.getString("UserID"));
    }
  } catch (SQLException se) {
    System.err.println("Error with " + ITEM_SQL + " and projectId = " + projectId);
    se.printStackTrace(System.err);
  } finally {
    // Clean up!
    try {
      rs.close();
    } catch (SQLException ignored) {
    }
    try {
      ps.close();
    } catch (SQLException ignored) {
    }
  }
  return al;
}

相关内容

  • 没有找到相关文章

最新更新