質問
返り値に問題がある<!> gt;。<!> lt;すべての雑誌名を
に保存したいArrayList<String> ListNameMagazine = new ArrayList<String>();
DBがあります。 DBにはテーブルname_magazine
があり、<=>のデータは
雑誌1
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
}
これは私の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; //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
}
結果のみ
Magazine4
Magazine4
Magazine4
Magazine4
@。@ミス@。@がどこで混乱するか
しかし、このような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;
}
データは、私が望むものを示しています。私はどこかで見逃しているだけですが、@。@の場所はわかりません。 .THX
解決
あなたの問題は、 return が1つだけを返し、すぐに返って関数が終了するということです!雑誌の名前を 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;
}
他のヒント
xan:リストを返そうとすると、メソッドは文字列を返します。
署名を
に変更する必要がありますpublic List<String> getResult(String sql) throws SQLException;
所属していません StackOverflow