有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

返回语句的java问题

我对退货有问题>&书信电报;我想把所有杂志的名字都存储到

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

我有一个DB;数据库中有一个表name_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
    }

这是我的回报声明:

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
    }

结果只是

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


共 (2) 个答案

  1. # 1 楼答案

    您的问题是return只返回一件事,它将立即返回,函数将退出!您正在重新调整一本杂志的名称,请尝试一下

    while (rs.next()) { 
    
        //System.out.println("Result:"+rs.getString(1));
    
       just_try = rs.getString(1);
    
      return just_try;
    
    }
    

    因此,您开始在rs中迭代,并得到名称:

    just_try = rs.getString(1);
    

    然后你告诉代码返回只要你试试

    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;
    
    }
    
  2. # 2 楼答案

    xan:当您尝试返回列表时,您的方法返回一个字符串

    签名必须更改为

    public List<String> getResult(String sql) throws SQLException;