0

次のコードを使用して、データベースから結果セットのデータを取得しています。

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));
}

しかし、データベース テーブルには 2 つの行がありますが、取得できるのは 1 行だけです。ここで何が欠けていますか?

4

3 に答える 3

9

rs.next()これは、ループの前に呼び出しているためです。ブール値を返し、このステートメントのために 1 つの行が印刷される機会を失います。

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));
}
于 2013-06-11T05:46:55.683 に答える
0

印刷中に ResultSet.next() を取り外します。これにより、RS カーソルが新しい行を指すようになります

于 2013-06-11T05:47:41.403 に答える
0

同じ問題があり、while の代わりに do...while ループを使用して解決しました。これも試すことができます。

于 2021-04-06T17:26:36.620 に答える