Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回查询SELECT语句_Java_Sql_Jdbc - Fatal编程技术网

Java 返回查询SELECT语句

Java 返回查询SELECT语句,java,sql,jdbc,Java,Sql,Jdbc,我正在尝试从authors表返回所有id。。。但是它不起作用。。。只是把第一个身份证还给我。。。但是如果我删除了报税表并打印出来,这会给我所有的ID String url = "jdbc:postgresql://localhost/testdb"; String user = "test"; String password = "test*"; try { con = DriverManager.getConnection(url, user, password); pst

我正在尝试从authors表返回所有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);
    }

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

默认情况下
return
语句返回返回的常量/变量的值,停止方法执行并离开方法。这里解释如下:

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

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;
List idList=new ArrayList();
//正在访问数据库并执行查询。。。
rs=pst.executeQuery();
while(rs.next()){
//将ID存储在列表中
idList.add(rs.getInt(1));
}
//关闭所有资源。。。
//在你的方法的底部
返回懒汉;

Return扮演
break
的角色在这种情况下,我建议返回
ResultSet
并在视图中使用for或
迭代器对其进行迭代

    while (rs.next()) {
        return rs;
    }
并且认为:

 while (nameOfYourFunction().next()) {
            System.Out.println( rs);
        }

构建一个
列表
,清理资源,并返回
列表
比泄漏结果集并让资源保持打开状态要好…@Glenn这取决于他的查询的性质和复杂性,如果查询更大,他将需要创建bean,然后将它们存储在arrayList中,我认为更麻烦的是,最干净的解决方案是在消耗资源后总是关闭它们