2015-12-22 68 views
0

我寫下了下面的代碼。在步驟5執行「顯示記錄」後,它會拋出ResultSet錯誤。我已經通讀了幾個問題,但沒有一個處理類似的問題。我更換了星號的用戶名和密碼,原因很明顯用盡結果集錯誤:導出值時出錯

package org.oracle.pojo; 
//STEP 1. Import required packages 
import java.sql.*; 

public class JDBCExample { 


// JDBC driver name and database URL 
    static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver"; 
    static final String DB_URL = "jdbc:oracle:thin:@10.180.35.58:1521:DBV6SP1M"; 

    // Database credentials 
    static final String USER = "*****"; 
    static final String PASS = "******"; 

public static void main(String[] args) { 
    Connection conn = null; 
    Statement stmt = null; 
    ResultSet rs = null; 
    try{ 
     //STEP 2: Register JDBC driver 
     Class.forName(JDBC_DRIVER); 
    //STEP 3: Open a connection 
    System.out.println("Connecting to database..."); 
    conn = DriverManager.getConnection(DB_URL,USER,PASS); 

    //STEP 4: Execute a query to create statment with 
    // required arguments for RS example. 
    System.out.println("Creating statement..."); 
    stmt = conn.createStatement(
         ResultSet.TYPE_SCROLL_INSENSITIVE, 
         ResultSet.CONCUR_READ_ONLY); 
    String sql; 
    sql = "SELECT id, first, last, age FROM Employees"; 

    boolean status = stmt.execute(sql); 
    if(status){ 
     //query is a select query. 
     rs = stmt.getResultSet(); 
} 


    // Move cursor to the last row. 
    System.out.println("Moving cursor to the last..."); 
    rs.last(); 


    //------------------------------------------------------------------------- 
    //STEP 5: Extract data from result set 
    System.out.println("Displaying record..."); 
    //Retrieve by column name 
    int id = rs.getInt("id"); 
    int age = rs.getInt("age"); 
    String first = rs.getString("first"); 
    String last = rs.getString("last"); 

    //Display values 
    System.out.print("ID: " + id); 
    System.out.print(", Age: " + age); 
    System.out.print(", First: " + first); 
    System.out.println(", Last: " + last); 

    // Move cursor to the first row. 
    System.out.println("Moving cursor to the first row..."); 
    rs.first(); 

    //STEP 6: Extract data from result set 
    System.out.println("Displaying record..."); 
    //Retrieve by column name 
    id = rs.getInt("id"); 
    age = rs.getInt("age"); 
    first = rs.getString("first"); 
    last = rs.getString("last"); 

    //Display values 
    System.out.print("ID: " + id); 
    System.out.print(", Age: " + age); 
    System.out.print(", First: " + first); 
    System.out.println(", Last: " + last); 
// Move cursor to the first row. 

    System.out.println("Moving cursor to the next row..."); 
    rs.next(); 

    //STEP 7: Extract data from result set 
    System.out.println("Displaying record..."); 

    id = rs.getInt("id"); 
    age = rs.getInt("age"); 
    first = rs.getString("first"); 
    last = rs.getString("last"); 

    //Display values 
    System.out.print("ID: " + id); 
    System.out.print(", Age: " + age); 
    System.out.print(", First: " + first); 
    System.out.println(", Last: " + last); 

    //STEP 8: Clean-up environment 
    rs.close(); 
    stmt.close(); 
    conn.close(); 


}catch(SQLException se){ 
     //Handle errors for JDBC 
     se.printStackTrace(); 
    }catch(Exception e){ 
     //Handle errors for Class.forName 
     e.printStackTrace(); 
    }finally{ 
     //finally block used to close resources 
     try{ 
     if(stmt!=null) 
      stmt.close(); 
     }catch(SQLException se2){ 
     }// nothing we can do 
     try{ 
     if(conn!=null) 
      conn.close(); 
     }catch(SQLException se){ 
     se.printStackTrace(); 
     }//end finally try 
    }//end try 
    System.out.println("Goodbye!"); 
}//end main 
}//end JDBCExample 

回答

0

如果您有您的表只有一條線,第一個和最後將是相同和next()將是你的表的behind the end

在處理結果集之前,總是返回first(),last(),next()的返回值