Que função usar para ir a um registro anterior em um banco?

5 respostas
cu_ringa

result é um objeto ResultSet.
usei o metodo next de ResultSet para ir passando por todos os registros
até chegar ao fim da tabela, então pensei que era só usar o metodo previous de ResultSet para fazer o contrario, só que está dando o seguinte erro de SQL: Result set type is TYPE_FORWARD_ONLY

public void setPreRegistro() {

try{
  	 	 
	boolean registro = result.previous();
 	
	if(registro)
	mostrarTabela();	
		else{
    	JOptionPane.showMessageDialog(null, "Não há registro", "Não há registro", JOptionPane.ERROR_MESSAGE );	    
    	//statement.close();
    	return;	  
  	}
  }
  catch(SQLException s){
  	System.out.println("hehehe
" + s.getSQLState() + "

" + s.getNextException() +

"

" + s.initCause(s.getCause()));

}

}

5 Respostas

black_fire

Segue abaixo um exemplo que statemente que aceita first() , last(), previous() e etc...

/* by Rodrigo G. Tavares de Souza 
 * Arquivo: TesteSql.java 
 */

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class TesteSql {
	public static void main(String[] args) {
		try {
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
			
			
			Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost;"+
			"User=sa;"+
			"Password=senha"+
			"DatabaseName=db");
			Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
			
			ResultSet rs = st.executeQuery("select * from gruposdac");
			
			int qtdLinhas = 0; 
			
			while (rs.next()) {
				qtdLinhas++;
			}
			
			rs.previous();
			rs.first();
			rs.last();
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
}

Um abraço... :wink:

black_fire

Outra coisa, quando vc for mandar um código use as tags assim fica mais fácil a leitura…

Ao editar sua msg ela fica assim:
public static void main(String[] args) { System.out.println("Oi mundo!!"); }

Um abraço… :lol:

hmichel

Estava tentando executar este exemplo no HSQLDB, mas ele me informa que estas funções nao sao suportadas. Esta limitação eh do drive do banco, ou existe como contorna-la??

valeu

R

hmichael…

coloque para nós como foi a atribuição da criação do statement e do resultset

até mais…

hmichel
Class.forName("org.hsqldb.jdbcDriver");
    
    conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost", "sa", "");
    
    conn.setAutoCommit(true);
    connect();
    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    ResultSet rs = stmt.executeQuery("SELECT " + query);

e quando executo rs.last(), por exemplo, recebo a resposta de “This function is not supported”.

Tenho como contornar, ou tenho que percorrer no braco mesmo??

valeu

Criado 22 de novembro de 2003
Ultima resposta 23 de nov. de 2003
Respostas 5
Participantes 4