سؤال

لدي مشكلة مع بيان الإرجاع >.< أريد تخزين جميع أسماء المجلات فيه

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;
}

المشكلة في بيان العودة.

عندما أمسح التعليق ( // ) وأعود الأخير فارغًا ؛انا مسحت.يصبح مثل هنا:

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

@.@ لقد احترت أين تفوت @.@

ولكن عندما أعرض البيانات في بيان الإرجاع مثل هذا

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

هل كانت مفيدة؟

المحلول

مشكلتك هي أن يعود يعود شيئا واحدا فقط، وسوف ارجع على الفور وستخرج الوظيفة!أنت تقوم بإعادة ضبط اسم المجلة حاول فقط.

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top