我有回报statment问题>。<我想所有的杂志名字存入

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

我有DB;在DB有一个表name_magazinename_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
    }

这是我的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;
}

问题是在返回语句。

当注释(//)我擦除和最后返回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

有帮助吗?

解决方案

您的问题是,返回返回的只有一件事,它会的立即返回该函数将退出的!您正在重新调整一本杂志的名称 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;

}

其他提示

可以:你的方法返回一个字符串,而你试图返回一个列表

签名必须改变,以

public List<String> getResult(String sql) throws SQLException;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top