我有一个方法,该方法通过日期对象返回ResultSet查询的值。遇到的问题是,在我的输出中,它仅返回特定列中的最后一个值。我该怎么办?

 public Date getTime(){
      Date date = null;
      DateFormat format;

      try {

              Class.forName("com.mysql.jdbc.Driver");
              Connection con = DriverManager.getConnection(url, "root", "");

              Statement stmt = con.createStatement();

              ResultSet result = stmt.executeQuery("SELECT * FROM error_log WHERE service_source = 'Billbox' ");

              while (result.next()) {  //retrieve data
                  String ds = result.getString("error_date");
                  format = new SimpleDateFormat("M/d/yyyy H:m:s a");

                  date = (Date)format.parse(ds);

              }
              con.close();

          } catch (Exception ex) {
              Logger.getLogger(LogDB.class.getName()).log(
                            Level.SEVERE, null, ex);
          }
      return date;
  }


然后在我的主要方法中:

  public static void main(String args[]){
      TestA ea = new TestA();
      Date ss = ea.getTime();
      System.out.println(ss);
  }


但这只会返回查询中的最后一个值。我怎样才能打印出其他(老年人)呢?

最佳答案

您需要填写查询结果中的日期列表。尝试这个 :

  public List<Date> getTime(){
      List<Date> dates = new ArrayList<Date>();
      DateFormat format;

      try {

          Class.forName("com.mysql.jdbc.Driver");
          Connection con = DriverManager.getConnection(url, "root", "");

          Statement stmt = con.createStatement();

          ResultSet result = stmt.executeQuery("SELECT * FROM error_log WHERE service_source = 'Billbox' ");

          while (result.next()) {  //retrieve data
              String ds = result.getString("error_date");
              format = new SimpleDateFormat("M/d/yyyy H:m:s a");

              dates.add((Date)format.parse(ds));

          }
          con.close();

      } catch (Exception ex) {
          Logger.getLogger(LogDB.class.getName()).log(
                        Level.SEVERE, null, ex);
      }
      return dates;
  }

08-05 01:36