Java 未获取结果集中的所有行

Java 未获取结果集中的所有行,java,resultset,Java,Resultset,我使用以下代码从resultset中的数据库获取数据: DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection connection = DriverManager.getConnection( "jdbc:oracle:thin:@host:1521:DB", "User","pass_01"); Statement statement = c

我使用以下代码从resultset中的数据库获取数据:

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());   

Connection connection = DriverManager.getConnection(
                    "jdbc:oracle:thin:@host:1521:DB", "User","pass_01");
Statement statement = connection.createStatement();   
resultset = statement.executeQuery("select * from employee"); 
System.out.println("Records Exist "+resultset.next()); 
System.out.println(resultset.getRow());
while (resultset.next()) {
    System.out.println(resultset.getInt(1) + " " +
    resultset.getInt(2) + " " + 
    resultset.getInt(3) + " " + 
    resultset.getString(4));
}

但我只得到一行,尽管数据库表中有两行。我在这里遗漏了什么?

这是因为您在循环之前呼叫rs.next。它返回一个布尔值,其中一行由于该语句而失去了打印的机会

Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:DB", "User","pass_01");
Statement statement = connection.createStatement();   
resultset = statement.executeQuery("select * from employee"); 
while (resultset.next()) {
    System.out.println(resultset.getInt(1) + " " +
    resultset.getInt(2) + " " + 
    resultset.getInt(3) + " " + 
    resultset.getString(4));
}

打印时取下ResultSet.next。这使得RS光标指向新行

我也遇到了同样的问题,我使用do…while循环而不是while来解决它。您也可以尝试一下。

您确定表中包含两行吗?您好@nabinghatani,欢迎使用SO!对我来说,除了公认的答案中给出的信息外,很难看到任何其他信息。如果你真的想用“做”来说明一种方法。。。虽然“当然可能,但相当于”,请这样做,并拿出一个简短的代码示例来说明您的观点。