Passando para o próximo registro do banco de dados

4 respostas
S

Olá galera, quero a ajuda do pessoal a respeito do meu código.
Tenho uma tela que contém 2 JTextFields 1 para o código e outra para o Nome, contém 4 botões, primeiro, anterior, próximo e último. Acontece que no momento que eu clico no botão primeiro ele carrega nas JTextField código e nome o primeiro registro do banco de dados e quando clico no último ele carrega o último registro nos JTextFields certo. Estou com problema pra fazer o próximo que na hora que eu clico ele carrega sempre o último. Consegui fazer com List, mas não é esse o meu objetivo, quero que me retorne direto do banco sem precisar mexer com o List. Quero ver como posso resolver esse tipo de situação antes de mexer com o Hibernate.

public LogradouroBean proximoRegistro(){
		try{
			LogradouroBean bean = new LogradouroBean();
			pstmt = conexao.prepareStatement("select *from logradouro order by codigo",
					ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			ResultSet rs = pstmt.executeQuery();
			rs.first();
			while(rs.next()){
				bean.setCodigo(rs.getString("codigo"));
				bean.setNome(rs.getString("nome"));
				System.out.println(bean.getCodigo());
				System.out.println(bean.getNome());
			}
			return bean;
		}
		catch(SQLException e){
			JOptionPane.showMessageDialog(null, e.getMessage());
			return null;
		}
	}

4 Respostas

jyoshiriro

Do jeito que está sempre vai carregar o último.

Ora, se você está fazendo um while enquanto houver registro no rs, logico que este laço só vai parar no último registro.

Jair_Rillo_Junior

Vamos supor que você tenha 10 registros no banco de dados. Você quer clicar no botão último e quer que o banco te retorno o décimo registro, é isso?

Se for isso, você terá que fazer uma query específica do banco de dados. Assim como o mysql tem o LIMIT, outros bancos tem seus equivalentes.

Exemplo para retorar o ultimo registro usando MysQL (algo assim).

SELECT * FROM Person ORDER BY PersonID DESC LIMIT 1

espero ter ajudado

S

Na verdade o primeiro e o último eu consegui fazer, não estou conseguindo fazer próximo e o anterior do código acima.

jyoshiriro

Há 3 maneiras de fazer o que você quer:

  1. Usando comandos nativos para controle de navegação de registros como “limit”, “offset”, “rownum”, “top”, etc. Estes variam de acordo com o SGBD.
  2. Usando a clausula “where” de maneira ineligente nos seus “botões”, para navegar condicionalmente pela chave primária.
  3. Usando um framework ORM como Hibernate Core ou JPA ao invés de JDBC puro.
Criado 28 de dezembro de 2009
Ultima resposta 28 de dez. de 2009
Respostas 4
Participantes 3