Problema com interface de busca java com mysql -AJUDA

3 respostas
DavidUser

Gente to com probleminha, ta tudo buscando ok mais quando eu peço uma busca pela coluna endereço ele so retorna o 1º com aquele endereco inves de mostrar todos. olha:

public ResultSet Conjunto(String sql) throws Exception {
        ResultSet rs=null;
        String stm=sql;
        Connection cnx;
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            cnx=DriverManager.getConnection("jdbc:mysql://localhost/fornec","root","");
            PreparedStatement statement=cnx.prepareStatement(stm);
            rs=statement.executeQuery();
        }
        catch(Exception e){
            System.out.println(e.toString());
        }
        return rs;
    }
public Fornecedor getEndFornecedor(String Nome){
        String stm="Select * from fornecedor Where Endereco='"+Nome+"'";
        ResultSet rs; //Traz a tabela
        Statement statem;
        Fornecedor forn=new Fornecedor();
        Fornecedor fr=new Fornecedor();
        try{
            rs=this.Conjunto(stm);
            rs.first();
            forn.setNome(rs.getString("Nome"));
            forn.setEndereco(rs.getString("Endereco"));
            forn.setTelefone(rs.getString("Telefone"));
            forn.setCidade(rs.getString("Cidade"));
            forn.setEstado(rs.getString("Estado"));
            fr=forn;

        }catch (Exception e){
            System.out.println(e.toString());
        }
        return fr;
    }
//-------------------------------------------------------------------------------------------------------------------
/*O projeto principal ta assim:*/


if ((busca.equalsIgnoreCase("be"))||(busca.equalsIgnoreCase("busca enderecal"))){
                String Nome=JOptionPane.showInputDialog(null,"Insira o endereco do fornecedor:","Digite \" * \" para listar todos");
            if (Nome.equalsIgnoreCase("*")){
                        Vector v=fr.ListaFornecedores();

        int nel=v.size();
        System.out.println("Numero de Clientes: "+nel);

        for(int y=0;y<nel;y++){

            fr=(Fornecedor) v.elementAt(y);
        System.out.println("id "+(y+1)+":");
        System.out.println(fr.getNome());
        System.out.println(fr.getEndereco());
        System.out.println(fr.getTelefone());
        System.out.println(fr.getCidade());
        System.out.println(fr.getEstado()+"\n");
        }
            }
            else{
        for(int i=0;i<2;i++){
            fr=forn.getEndFornecedor(Nome);

        System.out.println(fr.getNome());
        System.out.println(fr.getEndereco());
        System.out.println(fr.getTelefone());
        System.out.println(fr.getCidade());
        System.out.println(fr.getEstado());}
            }
            if (fr.getNome()==null && fr.getEndereco()==null && fr.getTelefone()==null && fr.getCidade()==null && fr.getEstado()==null){
                JOptionPane.showMessageDialog(null,"Endereco Inesistente");
                Nome=JOptionPane.showInputDialog(null,"Insira o endereco do fornecedor:");
                fr=forn.getNoumFornecedor(Nome);

        System.out.println(fr.getNome());
        System.out.println(fr.getEndereco());
        System.out.println(fr.getTelefone());
        System.out.println(fr.getCidade());
        System.out.println(fr.getEstado());
            }
            }

3 Respostas

O

Cara o troca isso:

rs.first();

Por isso:

rs.next();

O método first() só le a primeira linha.

Espero ter ajudado.

DavidUser

não funcionou!
continua mostrando apenas o primeiro

Z111

São tres os problemas:

  1. O retorno do método getEndFornecedor(String Nome) é Fornecedor. Não é nenhuma collection ou array, então, sempre retornará somente 1 registro
  2. Para um retorno de multiplos registros, a iteração está incorreta

onde está

# rs=this.Conjunto(stm);  
#             rs.first();  
#             forn.setNome(rs.getString("Nome"));  
#             forn.setEndereco(rs.getString("Endereco"));  
#             forn.setTelefone(rs.getString("Telefone"));  
#             forn.setCidade(rs.getString("Cidade"));  
#             forn.setEstado(rs.getString("Estado"));  
#             fr=forn;

deveria ser

List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
       while (rs.next()) {
             Fornecedor forn = new Fornecedor();
             forn.setNome(rs.getString("Nome"));  
             .....
             fornecedores.add(forn);
       }

       return fornecedores;

com o método retornando um List<Fornecedor>

  1. Para iterar no list e mostrar todos os registros estão relacionados aquele endereço
for (Fornecedor f:fornecedores) {
             System.out.println(f.getNome());
             ...
       }

talvez tenha alguma falha na sintaxe ae no meio pq fiz “a mao livre”

espero ter ajudado.

Criado 29 de março de 2009
Ultima resposta 30 de mar. de 2009
Respostas 3
Participantes 3