Проблема с оператором return
Вопрос
У меня проблема со статментом возврата >.< Я хочу сохранить все названия журналов в
ArrayList<String> ListNameMagazine = new ArrayList<String>();
У меня есть база данных;в базе данных есть таблица name_magazine
и данные в name_magazine
является
Журнал 1
Журнал 2
Журнал 3
Журнал4
Это мой главный:
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;
}
Проблема заключается в операторе return.
Когда комментарий ( // ) я стираю , а последний возвращает null;Я удаляю.Это стало таким, как здесь:
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
Журнал4
Журнал4
Журнал4
@.@ Я запутался, где промах @.@
но когда я показываю данные в операторе return следующим образом
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;
}
Данные показывают, чего я хочу.Я знаю, что я только где-то промахиваюсь, но я не знаю, где это @.@.Я надеюсь, что вы, ребята , сможете это найти .СПАСИБО
Решение
Ваша проблема в том, что Возврат возвращает только одну вещь, и это будет немедленно вернитесь, и функция завершит работу!Вы перенастраиваете название журнала просто_три.
while (rs.next()) {
//System.out.println("Result:"+rs.getString(1));
just_try = rs.getString(1);
return just_try;
}
Итак, вы начинаете повторять рс, и вы получаете название:
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;
}
Другие советы
ксан:Ваш метод возвращает строку, в то время как вы пытаетесь вернуть список.
Подпись должна быть изменена на
public List<String> getResult(String sql) throws SQLException;