Проблема с возвратом - PullRequest
       18

Проблема с возвратом

2 голосов
/ 30 ноября 2008

У меня проблема с возвратом статистики>. <Я хочу сохранить все названия журналов в </p>

ArrayList<String> ListNameMagazine = new ArrayList<String>();

У меня есть БД; в БД есть таблица name_magazine и данные в name_magazine есть

Magazine1

Magazine2

Magazine3

Magazine4

Это моя главная:

    ShowData Show = new ShowData();

    int HowManyMagazine = Show.HowManyMagazine(1); // to make sure there is how many Magazine name in my database

    //System.out.print(HowManyMagazine); //i want to make sure the data is out.

    String nmeMagazine = null; // this variable for get data from return statement 

    // i want to store in ListNameMagazine
    ArrayList<String> ListNameMagazine = new ArrayList<String>();

    for (int numbeer = 0;numbeer <= HowManyMagazine ; numbeer++)
    {
       //Store in 1 variable String, because if arrayList it's error
        nmeMagazine = Show.getResult("Select Name_Magazine from Magazine");
        // Store again in array list
        ListNameMagazine.add(nmeMagazine);
    }

    for (String s : ListNameMagazine)
    {
        System.out.println(s); // show the data
    }

Это мое возвращение:

public String getResult(String sql)
throws SQLException
{
    ResultSet rs = st.executeQuery(sql);
    ResultSetMetaData resultsetmetadata = rs.getMetaData();

    //String just_try = null;
    while (rs.next()) { 
         System.out.println("Result:"+rs.getString(1));
         //just_try = rs.getString(1);
         //return just_try;
    }
    return null;    //return just_try;
}

Проблема в выражении возврата.

Когда комментарий (//) стираю и последний возвращаю ноль; Я удаляю. Стало вот так:

public String getResult(String sql)
throws SQLException
{         
     ResultSet rs = st.executeQuery(sql);
     ResultSetMetaData resultsetmetadata = rs.getMetaData();
     String just_try = null;

     while (rs.next()) { 
         //System.out.println("Result:"+rs.getString(1));
        just_try = rs.getString(1);
        return just_try;
     }

     return just_try;
 }

Когда я показываю данные, используя это утверждение.

for (String s : ListNameMagazine)
    {
        System.out.println(s); // show the data
    }

только результат

Журнал4

Magazine4

Журнал4

Magazine4

@. @ Я запутался, где мисс @. @

но когда я показываю данные в операторе возврата, как это

public String getResult(String sql)
throws SQLException
    {         
    ResultSet rs = st.executeQuery(sql);
    ResultSetMetaData resultsetmetadata = rs.getMetaData();
    String just_try = null;

    while (rs.next()) {     
        System.out.println("Result:"+rs.getString(1));
        //just_try = rs.getString(1);
        //return just_try;
    }

    return null;
}

Данные показывают, что я хочу. Я знаю, что только где-то скучаю, но не знаю, где это @. @. Я надеюсь, что вы, ребята, можете найти его. THX

Ответы [ 2 ]

8 голосов
/ 30 ноября 2008

Ваша проблема в том, что return возвращает только одну вещь, и он немедленно возвращается, а функция завершает работу ! Вы перенастраиваете название журнала just_try .

while (rs.next()) { 

    //System.out.println("Result:"+rs.getString(1));

   just_try = rs.getString(1);

  return just_try;

}

Итак, вы начинаете перебирать rs и получаете имя:

just_try = rs.getString(1);

И затем вы сообщаете код для возврата just_try.

return just_try;

В этот момент будет возвращено just_try и функция закроется! Я думаю, что ваша проблема в том, что вы ожидаете, что функция продолжит работу и будет возвращать значения в код, который ее вызывает, но это не так, как она работает.

Я подозреваю, что вы хотите сделать что-то вроде этого:

ArrayList<String> ListNameMagazine;
ListNameMagazine = Show.getResult("Select Name_Magazine from Magazine");

затем в функции getResult:

public ArrayList<String> getResult(String sql) throws SQLException {

    ResultSet rs = st.executeQuery(sql);

    ResultSetMetaData resultsetmetadata = rs.getMetaData();

    ArrayList<String> returnArrayList = new ArrayList<String>();

    while (rs.next()) { 

        returnArrayList.add(rs.getString(1));

    }
    return returnArrayList;

}
3 голосов
/ 30 ноября 2008

xan: Ваш метод возвращает строку, а вы пытаетесь вернуть список.

Подпись должна быть изменена на

public List<String> getResult(String sql) throws SQLException;
...