Duvida resultset [resolvido]

7 respostas
evertonsilvagomesjav

Ola galera, segue o codigo com o resultset:

public Cliente exibirCliente() throws BancoDeDadosException{
		
		String usuario = "root";   
        String senha = "palitodedente";   
        String url = "jdbc:mysql://localhost:3306/javaprogrammer";   
        ResultSet rs = null;
        String nome = "";
        String cpf ="";
        String driverName = "com.mysql.jdbc.Driver";
        Cliente cli = new Cliente();
        try{
        	Class.forName(driverName);
        		
        		Connection conn = DriverManager.getConnection(url, usuario, senha);
        			
        			Statement statement = conn.createStatement();
        			
        				String sql = "SELECT * FROM cliente order by nome desc;"; 
        						
        						rs = statement.executeQuery(sql);
	       
        while(rs.next()){   		
	          
        	nome = nome +rs.getString("nome") +"\n";
        	cpf = cpf +rs.getString("cpf") +"\n";
        
	    }	
        	 	       	
        cli.setNome(nome);
        cli.setCpf(cpf);
	   
        statement.close();   
	    conn.close();   
       
        }catch (ClassNotFoundException e) {   
            e.printStackTrace();   
		
        }catch (SQLException e) {   
        	throw new BancoDeDadosException("Cliente não cadastrado");

	}
        return cli;
	}

Da forma como esta o codigo ele esta lendo o banco corretamente porém, esta lendo todos os nomes primeiro e em baixo le todos os cpf, nao estou conseguindo fazer com que leia nome e cpf junto do 1º cadastro, e assim por diante. Teria como fazer pesquisas em duas colunas e jogar em uma variavel? Tipo assim:

String sql = "SELECT nome, cpf FROM cliente;"
while(rs.next()){   		
	          
        	nome = nome +rs.getString("nome, cpf") +"\n";

7 Respostas

P

tenta assim.

while(rs.next()){ nome = rs.getString("nome"); cpf = rs.getString("cpf"); }

abraços

evertonsilvagomesjav

palmadias dese jeito so pegou meu 1º cadastro.

wbdsjunior

você concatena o nome e o cpf de cada cliente numa única instância de Cliente. apesar de funcionar, é muito estranho.

seu método deve retornar uma lista. mais ou menos assim:

public List<Cliente> exibirCliente() throws BancoDeDadosException{   
    // ...

    List<Cliente> clientes = new ArrayList<Cliente>();
    Cliente cliente;

    while(rs.next()) {
        cliente = new Cliente();
        cliente.setNome(rs.getString("nome"));
        cliente.setCpf(rs.getString("cpf"));
        clientes.add(cliente);
    }

    // ...

    return clientes;
}
depois você itera a lista para exibir os clientes.
lina

Oi,

Então é pq no resultado da consulta do seu Select só retornou 1(uma) linha.

Tchauzin!

B

Oi,

Então é pq no resultado da consulta do seu Select só retornou 1(uma) linha.

Tchauzin!
Aquele código só vai mostrar o último cliente mesmo. Nome e CPF são sobreescritos.

O do wbdsjunior está certo.

lina

Oi,

Então é pq no resultado da consulta do seu Select só retornou 1(uma) linha.

Tchauzin!
Aquele código só vai mostrar o último cliente mesmo. Nome e CPF são sobreescritos.

O do wbdsjunior está certo.

Oi,

Realmente… falta de atenção! pensei que os set’s estavam dentro do while.

O do wbdsjunior está certo

Tchauzin!

evertonsilvagomesjav

vlw ae galera resolvido!

Criado 5 de outubro de 2009
Ultima resposta 5 de out. de 2009
Respostas 7
Participantes 5