[RESOLVIDO]Problema com While e SelectItem

4 respostas
rapha.java
Olá pessoal, acho que minha duvida é um pouco idiota mas, quero que meu while pegue todos os nomes do banco de dados em mostre em uma selectItem, está funcionando mas, ele só esta pegando o ultimo nome da base, pegando não... ele esta adicionando em cima a cada loop que faz, quero saber como faço para ele pegar todos os nomes no banco, já tentei com arraylist mans não dá, até porque uma lista do tipo SelectItem não como usra o comando ".add", como faria então : Obrigado desde já!
public SelectItem listar() {
		SelectItem combo = new SelectItem();
		try {
			PreparedStatement stmt = this.getCon
					.prepareStatement("select nome from cad_usuario");
			ResultSet rs = stmt.executeQuery();
			while (rs.next()) {
				combo.setLabel(rs.getString("nome"));
			}
			rs.close();
			stmt.close();
			return combo;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

}
Até ai esta tudo funcionando, o unico problema é esse!

4 Respostas

F

Entaoo Cara …

Da um olhada no seu codigo …voce vai perceber que nao é que ele esta trazendo so o ultimo nome da base …

Na verdade voce tem uma unica instancia pra todos registros …

Tenta fazer isso …

try {   
        PreparedStatement stmt = this.getCon   
                .prepareStatement("select nome from cad_usuario");   
        ResultSet rs = stmt.executeQuery();   

       List<SelectItem> itens =  new ArrayList();

        while (rs.next()) {   
           SelectItem combo = new SelectItem();   
            combo.setLabel(rs.getString("nome"));
          itens.add(combo);   
        }

Voce vai ver que agora vc vai ter todos os nomes …

FLW …

rapha.java

fgavioes:
Entaoo Cara …

Da um olhada no seu codigo …voce vai perceber que nao é que ele esta trazendo so o ultimo nome da base …

Na verdade voce tem uma unica instancia pra todos registros …

Tenta fazer isso …

try {   
        PreparedStatement stmt = this.getCon   
                .prepareStatement("select nome from cad_usuario");   
        ResultSet rs = stmt.executeQuery();   

       List<SelectItem> itens =  new ArrayList();

        while (rs.next()) {   
           SelectItem combo = new SelectItem();   
            combo.setLabel(rs.getString("nome"));
          itens.add(combo);   
        }

Voce vai ver que agora vc vai ter todos os nomes …

FLW …


Então fgavioes, desta forma funcionou mas tive que fazer algumas modificações no tipo de lista, mas até ai tudo beim. Porém agora ele retorna na lista a quantidade de linhas que possui na tabela MAS COM O ULTIMO NOME INSERIDO!

rapha.java

rapha.java:
fgavioes:
Entaoo Cara …

Da um olhada no seu codigo …voce vai perceber que nao é que ele esta trazendo so o ultimo nome da base …

Na verdade voce tem uma unica instancia pra todos registros …

Tenta fazer isso …

try {   
        PreparedStatement stmt = this.getCon   
                .prepareStatement("select nome from cad_usuario");   
        ResultSet rs = stmt.executeQuery();   

       List<SelectItem> itens =  new ArrayList();

        while (rs.next()) {   
           SelectItem combo = new SelectItem();   
            combo.setLabel(rs.getString("nome"));
          itens.add(combo);   
        }

Voce vai ver que agora vc vai ter todos os nomes …

FLW …


Então fgavioes, desta forma funcionou mas tive que fazer algumas modificações no tipo de lista, mas até ai tudo beim. Porém agora ele retorna na lista a quantidade de linhas que possui na tabela MAS COM O ULTIMO NOME INSERIDO!

Então cara ta funcionando mesmo tava certo meu erro era eu não declarava a “SelectItem combo = new SelectItem” dentro do while, assim ele tinha uma instacia so como vc falou!
Obrigado pela ajuda!

A

Olá Rapha, estava com a mesma duvida, mas consegui resolver. Tem outra coisa que não consegui resolver, uma duvida igual a sua deste post: http://www.guj.com.br/java/247030-duvida-com-selectonemenu.

É uma duvida parecida, voce conseguiu resolver? Qual material te ajudou, se puder gostaria que me indicasse.

Obrigado.

Criado 18 de julho de 2011
Ultima resposta 19 de jul. de 2011
Respostas 4
Participantes 3