Como retornar mais de uma string buscando do record set

5 respostas
Renato_Teixeira

Fala pessoal, mais uma vez preciso da ajuda de vocês pois sozinho não sai de mais uma sinuca de bico aqui.

Vamos lá

Gostaria de criar um método genérico que eu enviasse para ele a string e os campos que ele deveria me retornar (nada de list, somente o resultado de uma consulta), desenvolvi o método abaixo mais não funcionou como eu queria:

public String buscarString(String qry, String campos){
        String vresultado="";

        try{
            conectar();
            ResultSet resultado = statement.executeQuery(qry);
            resultado.next();


            if(resultado.getString(1).equals("")){
                vresultado = "Não encontrado valor";
            }
            else{
                vresultado = resultado.getString(campos);
            }
            statement.close();
        }
        catch(SQLException sqlex){
            JOptionPane.showMessageDialog(null, sqlex.getMessage());
        }
        return vresultado;
    }

Com um campo vai beleza, mas com mais de um não funciona, alguém já trabalhou com algo do tipo? poderia me ajudar?

Quero genérico pois vou utilizar para várias coisas no sistema, então não tenho como especificar a quantidade de campos que vou utilizar.

Segue também o chamador do método:

qry = "SELECT * FROM USUARIO WHERE CPF = '"+Login.getCPF()+"'";
        recebe = banco.buscarString(qry, "NOME");
        this.lblNNomeAluno.setText(recebe);

        qry = "SELECT * FROM ALUNO A, TURMA B WHERE A.CPF_ALUNO = '"+Login.getCPF()+"'AND A.COD_TURMA = B.CODTURMA";
        recebe = banco.buscarString(qry,"CODTURMA, NOMETURMA");
        this.lblTurma.setText(recebe);

A primeira parte vai perfeito a segunda (com dois campos) dá pau...

Se algué puder me ajudar.

Abs.

5 Respostas

pmlm

Experimenta implementar o método:

public String[] buscarString(String qry, String... campos)
T

Eu recomendaria retornar uma lista de strings (List<String> ) porque é mais fácil de lidar que com um array. Melhor ainda, recomendaria um Map<String, String> - você passa o nome do campo e você obtém o valor desse campo.

Renato_Teixeira

Pessoal, obrigado a todos…

mas vamos lá

PMLM você me disse para eu usar isso:

[quote=pmlm]Experimenta implementar o método:

public String[] buscarString(String qry, String... campos)

Mas eu não sei quantos campos eu vou passar como parametros, pode ser 1 como podem ser 10… como vou fixar o valor na assinatura do método?

Abs

T

Seria mais ou menos:

public Map&lt;String, String&gt; buscarString(String qry, String... campos){  
        Map&lt;String, String&gt; valores = new TreeMap&lt;String, String&gt;(); 
   
        try{  
            conectar();  
            ResultSet resultado = statement.executeQuery(qry);  
            if (resultado.next()) {
                for (String campo : campos) {
                    valores.put (campo, resultado.getString (campo));
                }
            }
            statement.close();  
        }  
        catch(SQLException sqlex){  
            JOptionPane.showMessageDialog(null, sqlex.getMessage());  
        }  
        return valores;  
    }
pmlm

O thingol já pôs o código mas vou responder a esta questão. Ao identificar o parâmetro campos como String… isto significa que é um array de Strings mas que vão ser passadas como parâmetro. O método com a assinatura buscarString(String qry, String… campos), pode ser invocado com qualquer número de Strings maior ou igual a um. A primeira String será o parâmetro qry e as restantes são depois tratadas no método como um array de strings.

Criado 17 de junho de 2009
Ultima resposta 18 de jun. de 2009
Respostas 5
Participantes 3