1

我试图从作者表中返回所有 id ......但没有工作......只是返回我的第一个 ID ......但如果我删除返回并放入打印,这给了我所有的 ID ......

String url = "jdbc:postgresql://localhost/testdb";
String user = "test";
String password = "test*";

try {
    con = DriverManager.getConnection(url, user, password);
    pst = con.prepareStatement("SELECT id FROM authors");
    rs = pst.executeQuery();

    while (rs.next()) {
        return rs.getInt(1);
    }
4

3 回答 3

1

return语句默认返回返回的常量/变量的值,停止方法执行并离开方法。此处对此进行了解释:从方法返回值

要返回执行查询的所有结果,必须将结果存储在 a 中List,然后返回此列表:

List<Integer> idList = new ArrayList<Integer>();
//accessing to the database and executing the query...
rs = pst.executeQuery();
while (rs.next()) {
    //store the ids in the list
    idList.add(rs.getInt(1));
}
//close all the resources...
//at the bottom of your method
return idList;
于 2013-09-11T23:40:05.787 回答
1

Return 在这种情况下扮演的角色,我建议使用 for 或在 Viewbreak中返回ResultSet并迭代它。iterator

    while (rs.next()) {
        return rs;
    }

在视图中:

 while (nameOfYourFunction().next()) {
            System.Out.println( rs);
        }
于 2013-09-11T23:41:05.383 回答
0

return终止您的方法调用,因为它表示这是该方法应该计算的值。只有return你方法中的第一个调用才会被执行。因此,如果您打算从查询中获取所有结果,则应返回所有这些 id 的集合,在调用return它之前构建这些集合。

于 2013-09-11T23:39:56.610 回答