ResultSet不迭代指定列的值

时间:2013-07-11 14:23:36

标签: java jdbc 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);
  } 

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

3 个答案:

答案 0 :(得分:2)

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

  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;
  }

答案 1 :(得分:1)

由于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;

答案 2 :(得分:0)

只是:

        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>,并将主要内容更改为:

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