sql и база данных - PullRequest
       4

sql и база данных

0 голосов
/ 17 декабря 2009

У меня есть этот метод в моем классе базы данных, и я хочу получить часть данных из столбца, который является «dateOfBirth» в таблице MySQL, но я не знаю, почему list.size () равен «0» но когда я использую System.out.println () в моем коде, он покажет только первую строку таблицы sql, хотя у меня есть две строки !!!

мой метод:

   public static int getBirthPercent(String i) throws SQLException {
    Statement stmt = conn.createStatement();
    List<String> list = null;
    if (i.equals("O")) {


        ResultSet rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
        while (rst.next()) {
            String s1 = rst.getString(1);
            if (rst.wasNull()) {
                s1 = null;
            }
            String s2 = s1.substring(s1.length() - 4);
            int s3 = Integer.parseInt(s2);
            if (list == null && s3 < 1970) {
                list = new ArrayList<String>();
                list.add(s2);

            } else {
                list = new ArrayList<String>(0);

            }

        }


    }
    if (i.equals("N")) {

        ResultSet rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
        while (rst.next()) {
            String s1 = rst.getString(1);
            if (rst.wasNull()) {
                s1 = null;
            }
            String s2 = s1.substring(s1.length() - 4);
            int s3 = Integer.parseInt(s2);
            if (list == null && s3 > 2000) {
                list = new ArrayList<String>();
                list.add(s2);
                System.out.println(list);

            } else {
                list = new ArrayList<String>(0);

            }

        }
    }

он вернет "0" для всех ситуаций "если", но System.out.println (), показывает [2006], который является одним из года столбца моей строки, хотя у меня есть две строки, которые он должен показать [2006,2009 ] .но это не так

1 Ответ

1 голос
/ 17 декабря 2009

Теперь попробуйте этот код и дайте нам знать. Приветствия.

   public static int getBirthPercent(String i) throws SQLException {

    Statement stmt = conn.createStatement();
    ResultSet rst = null;
    List<String> list = new ArrayList<String>();
    if (i.equals("O")) {
        rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
        while (rst.next()) {
            String s1 = rst.getString(1);
            if (s1 != null && !s1.isEmpty()) {
               String s2 = s1.substring(s1.length() - 4);
               int n = Integer.parseInt(s2);
               if (n < 1970) {
                 list.add(s2);                    
               }
            }
        }
    }
    if (i.equals("N")) {
        rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
        while (rst.next()) {
            String s1 = rst.getString(1);
            if (s1 != null && !s1.isEmpty()) {
               String s2 = s1.substring(s1.length() - 4);
               int n = Integer.parseInt(s2);
               if (n > 2000) {
                list.add(s2);
               }
            }
        }
    }

    System.out.println(list);                    

   }

Достаточно рефакторинга на данный момент. Попробуйте сделать больше для себя. Например,

  • поиск commons-lang StringUtils для замены проверки на ноль,
  • используйте объект Date для хранения дат и используйте вместо него rs.getDate (),
  • Вы можете использовать объект Calendar, чтобы получить год. Или даже объект SimpleDateFormat тоже будет работать
  • и т.д ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...