2017-01-06 77 views
0

我试图从使用servlet和jsp的mysql数据库获取最近5天的数据。我创建了一个数据库类,查找最近5天到当前日期之间的日期。然后在我的serlvet中,我调用该方法并将值存储在列表中,并将其转发给jsp页面。我在jsp页面中创建了一个表来显示数据库数据,但没有显示出来。我调试它,它显示列表是空的。我不确定我做错了什么。这里是我的代码:从数据库获取最新数据到jsp页面

数据库的方法:

public static List getMaxRecordsHomePage(int id) { 
    List recordList = new ArrayList<>(); 

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); 
    Date date = new Date(); 
    String currentDate = dateFormat.format(date); 

    Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.DATE, -5); 
    Date previousDate = cal.getTime(); 
    String fromDate = dateFormat.format(previousDate); 

    try { 
     Connection conn = DBConnection.getConnection(); 
     String query = "SELECT * FROM record WHERE userId=? AND date BETWEEN ? AND ?"; 
     PreparedStatement stmt = conn.prepareStatement(query); 
     stmt.setInt(1, id); 
     stmt.setString(2, fromDate); 
     stmt.setString(3, currentDate); 
     ResultSet rs = stmt.executeQuery(); 

     while(rs.next()) { 
      Record records = new Record(); 
      records.setId(id); 
      records.setCategory(rs.getString("category")); 
      records.setDescription(rs.getString("description")); 
      records.setAmount(rs.getString("amount")); 
      records.setDate(rs.getString("date")); 
      recordList.add(records); 
     } 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return recordList; 
    } 
} 

的Serlvet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException 
{ 
    int id = SessionService.getSessionId(request, response);      
    List recordList = FinanceService.getMaxRecordsHomePage(id); 
    request.setAttribute("recordList", recordList); 

    RouteService.routeDispatcher(request, response, "homepage.jsp"); 
} 

JSP页面:

<table> 
    <caption>Recent Records</caption> 
    <tr> 
     <td>Category</td> 
     <td>Short Description</td> 
     <td>Amount</td> 
     <td>Date</td> 
    </tr> 
    <c:forEach var="Records" items="${recordList}"> 
     <tr> 
      <td><c:out value="${Records.category}"/></td> 
      <td><c:out value="${Records.description}"/></td> 
      <td>$<c:out value="${Records.amount}"/></td> 
      <td><c:out value="${Records.date}"/></td> 
     </tr> 
    </c:forEach> 
</table> 
+0

你检查了你的服务器日志吗?通常它会告诉你更多的信息。我怀疑你有一个空的地方。 – otc

+0

@otc是的,我检查了我的服务器日志,但没有错误消息 –

+0

在这种情况下很可能没有数据从查询返回。你有一个oracle或mysql数据库吗?我通常在我的语句上做一个setDate,而不是设置字符串。 – otc

回答

1

之间操作的范围内选择的值。这些值可以是数字,文本或日期。

如果您想在一个范围内获取日期,您可以在数据库中选择列类型为'data','datetime'等。

相关问题