ResultSet未迭代指定列的值



我有一个方法,它通过日期对象返回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;
  }

由于while循环,您可以指定最后一个值的日期。将您的方法更改为

public List<Date> getTime(){

你可以试试

List<Date> dates = new ArrayList<Date>();

然后进入while循环;

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);  
                  dates.put(date);

              }
return dates;

just:

        List<Date> lDateDb = new ArrayList<Date>();
        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);  
              lDateDb.add(date);
          }
        return lDateDb;

getTime的返回类型更改为List<Date>,并将main更改为:

public static void main(String args[]){        
  TestA ea = new TestA();
  List<Date> lAllDate = ea.getTime();
  for (Date lDate : lAllDate)
  System.out.println(lDate );
} 

最新更新