Pegar todos os valores de JComboBox

7 respostas
O

E ae galera bele?

Seguinte queria pegar todos os valores contidos em um JComboBox e jogar no banco, tem como? Ou vocês me indicam usar outro componente?
Por que tipo assim é uma tela onde o usuário vai cadastrar cidades por Regiões… Por exemplo ele coloca região de Campinas e nela vai estar contida todas as cidades próximas, só achei o método getSelectedItem e o getSelectedIndex, só que eles me trazem somente o item selecionado…

Valeu…

Qualquer coisa posto um screen da tela…

7 Respostas

T

bom dia.

vc pode usar isso:

String conteudo = "";
		int i = 0;
		while (i < cbo.getItemCount()){
			conteudo += cbo.getItemAt(i);
			i++;
		}

agora precisa usar a sua criatividade !!!

até mais.

O

tiralo:

bom dia.

vc pode usar isso:

String conteudo = "";
		int i = 0;
		while (i < cbo.getItemCount()){
			conteudo += cbo.getItemAt(i);
			i++;
		}

agora precisa usar a sua criatividade !!!

até mais.

Cara valeu pela ajuda funcionou, porém agora quando eu salvo no banco as palavras ficam todas juntas, por exemplo vamos supor que no combo esta as seguintes cidades: “indaiatuba, americana, campinas” e quando eu salvo no banco salva desse jeito “indaiatubaamericanacampinas”, ou seja, salvo tudo grudado…rs… tem com separar isso?

C
String[] valores;

int i = 0;  

while ( i &lt; cbo.getItemCount() )
{  
    valores[i] = cbo.getItemAt(i);  
    i++;  
 }

depois você monta a String do sql que vai inseriar o valor de cada item do combo.
Claro que não pra copiar e colar com está ai em baixo, é só uma luz.

String sql = null;

for ( String s : valores) 
{
     sql += "INSERT INTO tuatabela (tuacoluna) values ( " + v  + "  ); \n";
}
O

Entendi até consegui resolver o que eu queria porém não ficou nada pratico será que a galera ae me indica uma outra forma de fazer o que eu quero, quero guardar cidades por região como seria isso?

Luiz_Gustavo

Olá,

não entendi se você quer guardar cada cidade em uma linha da tabela, ou se é a concatenação de todas elas em uma linha.
Como disse o cawink, o que ele passou é só uma luz… e se você resolver seguir a abordagem dele, dê uma olhada nos métodos addBatch e executeBatch da interface Statement para realizar essas inserções.

Abraços!

O

Luiz_Gustavo:
Olá,

não entendi se você quer guardar cada cidade em uma linha da tabela, ou se é a concatenação de todas elas em uma linha.
Como disse o cawink, o que ele passou é só uma luz… e se você resolver seguir a abordagem dele, dê uma olhada nos métodos addBatch e executeBatch da interface Statement para realizar essas inserções.

Abraços!

Exatamente isso que eu quero saber, o melhor é guardar essas cidades em uma única linha no banco ou em várias repetindo a região? Gravar eu já sei…

Valeu!!!

Luiz_Gustavo

ozzy,

não sei exatamente qual o grau de conhecimento que você tem sobre bancos de dados. Me desculpe se o que eu vou falar já lhe é óbvio, mas a intenção é realmente ajudar.
Imaginando que você queira persistir o relacionamento entre Região e Cidade, vou considerar apenas essas duas entidades.
Não sei se você já possui essas duas tabelas em seu banco, e o que eu vou sugerir é baseado nessa hipótese.
Digamos que você tenha a tabela de REGIAO com dois campos (id e nome) e a tabela de CIDADE com três campos (id, nome, idregiao).

  1. Se uma cidade pode pertencer a uma única região, então você pode gravar na tabela de cidade o nome dela, e o id da região.

Usando a lógica sugerida acima, teríamos:

Cidade[] cidades;  
   
 int i = 0;    
   
 while ( i < cbo.getItemCount() )  
 {    
     // imagine que idRegiao vocÊ pegou de outro combo, ou campo, e que o construtor da classe cidade 
     // recebe como parâmetros o nome da cidade e o id da região

     cidades[i] =  new Cidade( ((String)cbo.getItemAt(i)), idRegiao);    
     i++;    
 }  


 String sql = null;  
   
 for ( Cidades : cidades)   
 {  
      sql += "INSERT INTO cidade (nome, idregiao) values ( " + cidade.getNome()  + ", " + cidade.getIdRegiao() + "  ); \n";  
 }
  1. se uma cidade puder pertencer a mais de uma região, então você terá uma tabela de relacionamento CIDADE_REGIAO que possuirá apenas os ids de CIDADE e REGIAO (idcidade, idregiao).
    Nesse caso você teria previamente cadastradas as cidades e as regiões, e o que você cadastraria de novo seriam os relacionamentos.
    Você poderia “alimentar” seu combo diretamente com objetos do tipo “Cidade” ao invés de Strings, e ao obter os valores do combo, para gravar no banco, poderia fazer o seguinte:
int[] idcidades;  
   
 int i = 0;    
   
 while ( i < cbo.getItemCount() )  
 {    
     // imagine que o combo foi preenchido com objetos "Cidade"

     idcidades[i] =  ((Cidade)cbo.getItemAt(i)).getId();    
     i++;    
 }  


 String sql = null;  
   
 for ( int index = 0; index < idcidades.length; index++)   
 {  
      sql += "INSERT INTO cidade_regiao (idcidade, idregiao) values ( " + idcidades[index]  + ", " + idregiao+ "  ); \n";  
 }

Obviamente esta não é a melhor maneira de se fazer o cadastro, procure usar PreparedStatements, e os métodos que citei anteriormente, da intercafe Statement. Mas a idéia geral seria essa.

Espero que ajude.

[]'s

Criado 24 de setembro de 2008
Ultima resposta 25 de set. de 2008
Respostas 7
Participantes 4