Varrer registro a registro

3 respostas
F

Olá galera,

Gostaria de saber como faço para varrer registro a registo pelo jdbc, pois não consigo passar do primeiro registro. Como faço?!

import java.sql.*;

public class Selecionar  {

	private ResultSet resultado;
	Connection con = new Conexao().getConection();
	int i = 1;
	public Selecionar() {
		selecionarPedido();
	}
	
	public void selecionarPedido() {
		try {
			Statement comando = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
			resultado = comando.executeQuery("Select * from tab03PEDIDO ORDER BY cod_pedido DESC");
			while(resultado.next())
			{
			    InterfacePedidos.tPed.setText(String.valueOf(resultado.getInt("cod_pedido")));
				if (resultado.wasNull()) break;
				
				InterfacePedidos.tPlaca.setText(resultado.getString("placa"));
				if (resultado.wasNull()) break;
				
				
				InterfacePedidos.tFuncionario.setText(String.valueOf(resultado.getInt("cod_func")));
				if (resultado.wasNull()) break;
				
				InterfacePedidos.area.setText(resultado.getString("obs"));
				if (resultado.wasNull()) break;
			}
			comando.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}

abraço,

3 Respostas

raphael.ricci

Cara tenta tirar esses breaks e vê o que acontece.

B

Troque, por exemplo,

InterfacePedidos.tPed.setText(String.valueOf(resultado.getInt("cod_pedido")));  
                if (resultado.wasNull()) break;

Por (tirando os breaks, que acho que você não percebeu para que servem: )

int iCodPedido = resultado.getInt("cod_pedido");
if ( ! resultado.wasNull()) {
    InterfacePedidos.tPed.setText (String.format ("%d", iCodPedido)); 
} else {
    // o que é que você faz quando for nulo? Talvez tenha só de limpar o campo. Mas não usar um break, que sai do loop!
}

e assim por diante…

A vantagem de usar String.format neste caso é que você pode, por exemplo, botar zeros à esquerda se o seu problema assim pedir. Por exemplo, digamos que os códigos de pedido tenham sempre 10 posições, completados com zeros à esquerda. Nesse caso, você usaria:

InterfacePedidos.tPed.setText (String.format ("%010d", iCodPedido));
F

Consegui acessar o último registro, mas não consigo subtrair para acessar os outros registros, sendo que a chave primária é o cod_pedido, como faço para acessar os registros anteriores?

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

import javax.swing.JOptionPane;


public class Retroceder {

	private int codPed;
	private ResultSet resultado;
	Connection con = new Conexao().getConection();
	public Retroceder() {
		retrocederPedido();
	}
	
	public void retrocederPedido() {
		try {
			Statement comando = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
			resultado = comando.executeQuery("Select * from tab03PEDIDO ORDER BY cod_pedido DESC");
			resultado.afterLast();
			while(resultado.previous())
			{
				InterfacePedidos.tPed.setText(String.valueOf(resultado.getInt("cod_pedido")));
				InterfacePedidos.tPlaca.setText(resultado.getString("placa"));
				InterfacePedidos.tFuncionario.setText(String.valueOf(resultado.getInt("cod_func")));
				InterfacePedidos.area.setText(resultado.getString("obs"));
			
			}
			comando.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}
Criado 5 de outubro de 2012
Ultima resposta 6 de out. de 2012
Respostas 3
Participantes 3