2013-10-25 3 views
0

На выполнение follwing кода я получаю java.sql.SQLException ошибки: ResultSet закрытResultSet становится закрыт на выполнение statement.execute (SQL)

общественного класса {

точки сохранения
public void extract(ResultSet rs) 
{ 
    int c; 
    try { 
     while(rs.next()) 
     { 
     c = rs.getInt("id"); 
     String d=rs.getString("name"); 
     String e=rs.getString("city"); 
     String f=rs.getString("state"); 
     String g=rs.getString("country"); 

    //Displaying values 
    System.out.println("ID is:"+c+"\tName is:"+d+"\tCity is:"+e+"\tState is:"+f+"\tCountry is:"+g); 
     } 
    } catch (SQLException e1) { 
     e1.printStackTrace(); 
    } 

} 

public static void main(String[] args) { 
    SavePoints spobj=new SavePoints(); 
    try { 
     Connection con=DriverManager.getConnection("jdbc:odbc:Divya", "SYSTEM", "tiger"); 
     Statement st=con.createStatement(); 
     ResultSet rs=st.executeQuery("select * from publishers"); 
     spobj.extract(rs); 
     //DatabaseMetaData databaseMetaData = con.getMetaData(); 
     //System.out.println(databaseMetaData.getDriverMajorVersion()); 
     //Savepoint sp=con.setSavepoint("Deleting Rows"); 
     st.execute("delete from publishers where id=104"); 
     //con.rollback(sp); 
     spobj.extract(rs); 
    } catch (SQLException e) { 

     e.printStackTrace(); 
    } 


} 

}

Какая ошибка? Я не могу это найти. Пожалуйста, дайте мне знать. Я новичок .. поэтому, пожалуйста, объясните в простых терминах. Я благодарен вам за вашу помощь. Спасибо :)

ответ

0

вы назвали s pobj.extract(rs); дважды,

первый раз, когда эта функция выполняет ResultSet переходит к последнему, потому что вы используете rs.next() ..

для достижения этой цели вы должны использовать прокручивать ResultSet

Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
            ResultSet.CONCUR_READ_ONLY); 

и для следующего вызова spobj.extract(rs); обратный вызов по результирующем rs.previous()

+0

Просто дружеский намек: в верхней части окна ответа есть некоторые опции форматирования: если вы используете, например, кнопку '{}', она форматирует ваш код (моноширинный шрифт, работает разрыв). Это поможет читаемости для строк кода (и особенно блоков из них) в ваших anwers :) – Nanne

Смежные вопросы