Dúvida sobre como efetuar navegação em registros com JDBC

5 respostas
C

Tenho um programa que faz acesso a uma base acess via jdbc, em tela tenho quatro botões, para efetuar a navegação nos registros:
Tipo :
<< < > >>
First Prev Next Last
Como eu faço para criar, os comandos SQL e passar via string para o ResultSet???
Alguém poderia me passar um exemplo da sintase destes comandos.
Ou posso utilizar os comando first(),previus(),next() e last().
E por exemplo se eu utitilizar estes comandos e for para o último registro e ao clicar no botão prev o resultSet vai conseguir se posicionar no registro anterior???

5 Respostas

davidbuzatto

A instrução SQL é passada pela interface Statement que cria o seu ResultSet.

Vc tem que usar os métodos q vc mencionou (first(), previus(), next() e last()) no seu ResultSet para navegar nos registros.

Sim, vai conseguir se posicionar corretamente. Mas é sempre baseado no que foi retornado pelo seu Statement.

Da uma pesquisada no google q vc vai achar muitos tutoriais ensinando como conectar a um bd usando o jdbc, criar statements, etc.

Falow!

C
Eu fiz a pergunta pois me deparei com o seguinte erro. Quero busca quando a minha interface carregar o valor do primeiro registro da Base.

Fiz o seguinte

String url = jdbc:odbc:dbsample;

Connection con;

Statement stmt;

String msg;

try {
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

}catch (ClassNotFoundException e) {
    		
    		System.err.print("ClassNotFoundException: ");
    		System.err.print(e.getMessage());
    		
    		
    	}
    	
    	try {
    		con = DriverManager.getConnection(url, "user", "password");         		stmt = con.createStatement();
    				
    	}catch(SQLException ex){
    		
    		  msg=ex.getMessage();
              JOptionPane.showMessageDialog(null,msg,"Erro",JOptionPane.ERROR_MESSAGE);
                
              
    	}
    ResultSet uprs = stmt.executeQuery("SELECT * FROM Departamento");
/*** Aqui carrega os campos de tela com o valor do primeiro registro ***/

while (uprs.first()){

this.JTextField1.setText(uprs.getString(COD_DEPTO));

this.JTextField1.setText(uprs.getString(DESC_DEPTO));

}

E aparece o seguinte erro de SQL:
java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
at sun.jdbc.odbc.JdbcOdbcResultSet.first(Unknown Source)

adriano.ferranti

Como a mensagem de erro diz, o recordset so pode ser movimentado p frente. Vc nao pode usar uma instrucao como

para resolver vc pode substituir

while (uprs.first()){ 
this.JTextField1.setText(uprs.getString("COD_DEPTO")); 
this.JTextField1.setText(uprs.getString("DESC_DEPTO")); 
}

por

while (uprs.next()){ 
this.JTextField1.setText(uprs.getString("COD_DEPTO")); 
this.JTextField1.setText(uprs.getString("DESC_DEPTO")); 

break;
}

Trara’ o primeiro registro e saira’ do loop

C

Assim funcionol mas no inicio ai vem a outra parte do meu problema, tenho os botões em tela << < > >>, para que o usuário possa navegar para frente e para trás nos registros e ai os comandos first(), previus(), next() e last() vão funcionar???

VinnyJ

Cara, estou com o mesmo problema do carlos.valentini…Aí coloquei no lugar no first() o next()…FUNCIONOU LEGALZINHO…
Mas quando vou colocar os outros botões( last(), previous() e first()) não funciona mais nada!!!
Como é que eu faço pra resolver esse problema agora???

Valw

Criado 3 de julho de 2006
Ultima resposta 20 de dez. de 2007
Respostas 5
Participantes 4