質問

返り値に問題がある<!> 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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top