Olá…
gostaria de saber como pego os dados do banco e jogo em uma ArrayList??
eu queria pegar o nome e o codigo …
se alguem puder ajudar vlw…
abraço… 
ArrayList
52 Respostas
Olá!
Crie um classe que tenha como atributos o nome e o código. Crie para esta classe um construtor que já receba estes dois parâmetros.
faça algo do tipo:
ArrayList objetos = new ArrayList();
while(seuResultSet.next()){
String nome = ... //pegue o campo nome
String codigo =... //pegue o campo codigo
objetos.add(new suaClasse(codigo, nome));
}
Abraço!
oh eu fiz isso cassio...
criei a classe lista com os atributos ... e o seguinte codigo...
public ArrayList getDados5(String s){
ArrayList objeto = new ArrayList();
String codigo, nome;
if(conn){
if(connection != null){
try{
ps = connection.prepareStatement("select nome,codigo from Funcionario where codigo = ? order by nome;");
ps.setString(1,s);
rs = ps.executeQuery();
while(rs.next()){
nome = rs.getString("nome");
codigo = rs.getString("codigo");
objeto.add(new Lista(codigo, nome));
}
}catch(SQLException e){
System.out.println(e.getMessage());
System.out.println("Não ta fazendo.");
}
}
}
return objeto;
}
ta certo???
se sim ...
gostaria de saber como pegar o resultado em um JComboBox...
vlw
Olá
Aparentemente está certo, não posso afirmar pois não vi sua classe Lista.
Vc não testou? Teste e imprima no console quantos elementos tem seu ArrayList quando sair do while…
System.out.println(seuArrayList.size());
Para alimentar um combox a partir deste ArrayList
JComboBox combo = new JComboBox(seuArrayList.toArray());
Abraço!
Hum não to conseguindo fazer o teste ...
eu mudei umas coisas ..
vo posta o codigo da classe Lista
public class Lista {
String Nome;
String Codigo;
public Lista() {
}
public Lista(String nome, String codigo){
this.Nome = nome;
this.Codigo = codigo;
}
public String getNome(){
return Nome;
}
public void setNome(String Nome){
this.Nome = Nome;
}
public String getCodigo(){
return Codigo;
}
public void setCodigo(String Codigo){
this.Codigo = Codigo;
}
}
e esse código ta na classe banco ...
public ArrayList getDados5(Lista l){//verifica o codigo
ArrayList objeto = new ArrayList();
String codigo, nome;
if(conn){
if(connection != null){
try{
ps = connection.prepareStatement("select nome,codigo from Funcionario where codigo = ? order by nome;");
ps.setString(1,l.getCodigo());
rs = ps.executeQuery();
while(rs.next()){
// aux += (rs.getInt("Codigo") + " - " + rs.getString("Nome") + " - " + rs.getString("Telefone") + "\n");
nome = rs.getString("nome");
codigo = rs.getString("codigo");
objeto.add(new Lista(codigo, nome));
}
System.out.println(objeto.size());
}catch(SQLException e){
System.out.println(e.getMessage());
System.out.println("Não ta fazendo.");
}
}
}
return objeto;
}
e eu queria chamar ele de uma outra classe ...
abraço ...
Mas o que está acontecendo, está caindo na exceção?!
E porque seu método recebe um objeto da classe Lista?
vixii eu to perdido …rs
axeei q fosse assim …
qqr coisa dexa …
vlw abraço
Não poxa, chegamos tão longe pra vc largar mão?
Explica ai, dá algum erro? O que tá rolando?!
ae vlw veio …
eh assim eu tenho a classe Lista a Classe Banco e eu tenho uma outra classe que uma tela … que tem o JComboBox…
e eu teria q chamar da classe tela nao eh ??
pra compilar …
eu to meio perdido … vc flw do objeto ali … como ficaria ?
Alguem poderia me ajudar ???
Esse seu método que retorna um ArrayList está dentro da classe Banco?
Sua classe que tem a tela é a que tem o main?
Se for este o caso, vc pode declarar um objeto do tipo Banco na classe que tem a tela e chamar o método que da classe Banco que retorna o ArrayList a partir deste objeto, passando o retorno como
seuComboBox = new JComboBox(seuArrayList.toArray());
E assim inicializando o seu combo 
puts cassio, nao to conseguindo
public void combo(){
fornec1.removeAllItems();
Banco banco = new Banco();
banco.getDados5();
fornec1 = new JComboBox(objeto.toArray());
eh mais o menos assim ???
vlw …
Péra ai… se o seu combo já existe antes de vc alimentar, então vc tem que alterar o model dele… Quem define quais itens serão exibidos no combo na verdade é o model associado a ele.
Agora, se vc simplesmente cria a janela com os itens ja incluidos no combo box, o usuáfrio seleciona o que quer e depois sai da janela, sem que os itens sofram alterações, vc pode instanciar um novo combo box recebendo o array sem problemas. Se o seu combo box for mudando, fica mais complicado adicionar os itens dessa forma, sem ter que alterar diretamente o model. Acho melhor vc limpar tudo e depois usar um laço que percorra o ArrayList e vá adicionando os itens um a um no combo… sacou?
Se o combo for criado na inicialização da janela e depois não sofrer alterações
Banco banco = new Banco();
//... mais do seu código ...
fornec1 = new JComboBox(banco.getDados5().toArray());
//... mais do seu código ...
Se o seu combobox, em algum momento, seja totalmente alterado, recebendo novos itens (um exemplo)
ArrayList dados = banco.getDados5();
fornec1.removeAllItems();
//adicionando todos os itens do ArrayList ao seu JComboBox
for(int i = 0; i < dados.size(); i++)
fornec1.addItem(dados.get(i));
Qualquer coisa posta ai,
Abraço!
amigo ta dando um erro no getDados5();
ArrayList dados = banco.getDados5();
fornec1.removeAllItems();
//adicionando todos os itens do ArrayList ao seu JComboBox
for(int i = 0; i < dados.size(); i++)
fornec1.addItem(dados.get(i));
colokei dessa forma …
abraço …vlw 
Fica dificil saber o problema se vc não colar o erro ai… 
ah sim rs … foi mal …
getDados5(java.lang.String) cannot be applied to()
sabe o q eh??
Alguem pode me ajudar com esse erro??
obrigado…
getDados5(java.lang.String) cannot be applied to()
Vc deve estar chamando o método getDados5 sem nenhum parâmetro, sendo que ele só é aplicável com String como parâmetro.
Acho que é isso! :idea:
vc saberia me dizer q parametro devo passar … não to conseguindo …
uma string :idea:
olá tendo essas classes…
alguem pode me dizer o que esta errado ??
classe tela…
public void combo(){
Banco banco = new Banco();
Lista lista = new Lista();
ArrayList dados = new ArrayList();
ArrayList dados = banco.getDados5(lista);
fornec1.removeAllItems();
//adicionando todos os itens do ArrayList ao seu JComboBox
for(int i = 0; i < dados.size(); i++)
fornec1.addItem(dados.get(i));
}
classe banco
public ArrayList getDados5(String s){//verifica o codigo
ArrayList objeto = new ArrayList();
String codigo, nome;
if(conn){
if(connection != null){
try{
ps = connection.prepareStatement("select nome,codigo from Funcionario where codigo = ? order by nome;");
ps.setString(1,s);
rs = ps.executeQuery();
while(rs.next()){
// aux += (rs.getInt("Codigo") + " - " + rs.getString("Nome") + " - " + rs.getString("Telefone") + "\n");
nome = rs.getString("nome");
codigo = rs.getString("codigo");
objeto.add(new Lista(codigo, nome));
}
System.out.println(objeto.size());
}catch(SQLException e){
System.out.println(e.getMessage());
System.out.println("Não ta fazendo.");
}
}
}
return objeto;
}
classe Lista
public class Lista {
String Nome;
String Codigo;
public Lista() {
}
public Lista(String nome, String codigo){
this.Nome = nome;
this.Codigo = codigo;
}
public String getNome(){
return Nome;
}
public void setNome(String Nome){
this.Nome = Nome;
}
public String getCodigo(){
return Codigo;
}
public void setCodigo(String Codigo){
this.Codigo = Codigo;
}
}
vlw galera … 
Este último código que voce fez está errado na chamda do getDados()…
se voce define numa classe um metodo que recebe uma String, entao o chamdor deve chama-lo corretametne…
Acho que sua classe de Tela deveria ficar assim:
public void combo(){
Banco banco = new Banco();
Lista lista = new Lista();
ArrayList dados = new ArrayList();
// o valor ALGUM TEXTO vai ser passado no getDados...
ArrayList dados = banco.getDados5("ALGUM TEXTO");
fornec1.removeAllItems();
//adicionando todos os itens do ArrayList ao seu JComboBox
for(int i = 0; i < dados.size(); i++)
fornec1.addItem(dados.get(i));
}
Mas assim acho que seu SELECT nao vai retornar nada… POIS ACHO QUE NAO TEM CODIGO COM O VALOR ALGUM TEXTO…
Boa sorte ai…
[]´s
na sua “classe tela”, no método “combo”, vc invoca o método getDado5 passando por parâmetro um objeto do tipo “Lista”
ArrayList dados = banco.getDados5(lista);
Só que este método getDados5, conforme o que está escrito na sua “classe banco”, recebe um objeto do tipo String por parâmetro.
Como não há uma forma de conversão implícita de um objeto Lista para um objeto String, o Java reclama mesmo.
Se eu entendi o que vc tá querendo fazer ali, seria algo assim
ArrayList dados = banco.getDados5(lista.getCodigo());
Veja se isso resolve
Mantu… o erro sumiu …
mas no ComboBox nao ta aparecendo nda …
da danto 0 …no
objeto.add();new Lista(codigo, nome)
}
System.out.println(objeto.size());
Mto obrigadooo…
:thumbup:
Será que não é porque a query tá retornando um result set vazio?
eu nao sei …
vc saberia alguma forma ?
Lista lista = new Lista();
ArrayList dados = banco.getDados5(lista.getCodigo());
public Lista(){
this.Nome = null;
this.Codigo = null;
}
ArrayList dados = banco.getDados5(lista.getCodigo());
public void combo(){
Banco banco = new Banco();
Lista lista = new Lista("Abobrinha", "12345");
ArrayList dados = banco.getDados5(lista.getCodigo());
//...
}
Mto Obrigado pela explicação Mantu…
ta mais claro agora …
eu fiz daquele jeito … apareceu q tem 1 ,… ta certo …
mas no ComboBox add isso oficina.Lista@db4fa2
oficina eh o nome do meu pacote…
pq sera ??
Isso se deve ao seguinte:
Um objeto combo, quando vai ser desenhado na tela, ele “desenha” os itens nele contido de que forma? Invocando o método toString() destes itens. O método toString() é um método presente em todas as classes escritas em Java.
Já ouviu falar que em Java (quase)tudo e objeto? Dizem isso porque toda e qualquer classe criada em java tem uma relação de herança(ou é filha, ou é neta, ou é bisnet, etc…) com a classe Object. A classe object provê alguns métodos, e um destes métodos é o toString(). A idéia deste método é permitir que se estabeleça uma descrição textual de um objeto. Como a classe Object representa um conceito meio vago (um “objeto”… e daí?..), a descrição textual fornecida pelo método toString() desta classe é também meio vaga, genérica. Esta descrição é exatamente a descrição que apareceu no seu combo.
Como disse antes, o combo, pre “escrever” seu conteúdo, chama o método toString() de cada item nele inserido. No seu caso, temos um item apenas, que é um objeto Lista. Como a sua classe Lista não sobrescreve o método toString(), herdado da classe Object(), quando o combo - internamente - pede “Ou, objeto Lista! Faz o favor de executar o seu método toString() e me dê o String retornado, blz?”, o seu objeto verifica que não há na classe dele (Lista) um método chamado “toString()”, então ele procura por este método dentre aqueles herdados. Como a sua classe Lista não tem uma declaração de extends, isto quer dizer que ela, implicitamente, herda de Object. Assim, o objeto lista procura na classe Object algum método “toString()” e, de fato, encontra. Ao ser encontrado, o método é executado e o String retornado é entregue ao combo, que por sua vez escreve este String na “caixinha” da sua tela.
Perceba que o método toString que foi efetivamente executado é o toString definido na classe Object, que faz aparecer essa coisa estranha com um “@” no meio.
Pra você resolver isso, basta então você sobrescrever o método toString() na sua classe Lista, definindo assim uma descrição textual para os objetos desta sua classe. Vamos supor que vc queira descrever textualmente um objeto Lista da seguinte forma:
(nome=Abobrinha, codigo=12345)
Vc teria que colocar um método toString na sua classe Lista, desta forma:
public String toString(){
return "(nome=" + Nome + ", código=" + Codigo + ")";
}
Experimente isto, e veja o que acontece. Depois, se desejar, vc pode mudar a forma como o item aparece no seu combo mudando a forma como você implementa este método toString().
A título de curiosidade, aquela bizarrice apresentada pelo toString() da classe Object. Aqui vai como está implementado o código do toString() nesta classe:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
vlw Mantu…
mas eh soh coloca o metodo toString() na classe lista ???
eu coloquei e continua igual…
ou eu tenho que chama-lo ???
abraço …
Ah, não …
deu certo sim …
mto Obrigado Mantu…
pra carregar todos os nomes e os codigos…
sem precisar digitar …
como eu faço??
vlw amigo…
Qual é a chave primária dessa sua tabela?
Ola Amigo …
a chave primária eh Código …
vlw abraço…
alguem sabe???
obrigado…
Ve se isso funciona:
public ArrayList getTodosDados(){//verifica o codigo
ArrayList objeto = new ArrayList();
String codigo, nome;
if(conn){
if(connection != null){
try{
ps = connection.prepareStatement("select nome,codigo from Funcionario order by nome;");
rs = ps.executeQuery();
while(rs.next()){
// aux += (rs.getInt("Codigo") + " - " + rs.getString("Nome") + " - " + rs.getString("Telefone") + "\n");
nome = rs.getString("nome");
codigo = rs.getString("codigo");
objeto.add(new Lista(codigo, nome));
}
System.out.println(objeto.size());
}catch(SQLException e){
System.out.println(e.getMessage());
System.out.println("Não ta fazendo.");
}
}
}
return objeto;
}
Utiliza este método pra carregar o seu ArrayList
mas na tela eu chamo assim ???
public void combo(){
Banco banco = new Banco();
Lista lista = new Lista();
ArrayList dados = banco.getTodosDados();
fornec1.removeAllItems();
for(int i = 0; i < dados.size(); i++)
fornec1.addItem(dados.get(i));
}
soh assim não ta fazendo …
abraço …
ah, não deu certo sim mantu rsrs… fiz assim …
public void combo(){
Banco banco = new Banco();
Lista lista = new Lista("","");
ArrayList dados = banco.getTodosDados(lista);
fornec1.removeAllItems();
for(int i = 0; i < dados.size(); i++)
fornec1.addItem(dados.get(i));
}
e no no metodo eu coloquei assim :
public ArrayList getTodosDados(Lista l){//verifica o codigo
eh assim ???
vlw abraço…
Você não precisa passar um Lista pro método getTodosDados(). Perceba que em momento algum deste método, este parâmetro que vc criou é utilizado.
Do jeito que eu postei, supostamente era pra funcionar, por que, afinal, vc faz a query pedindo, indistintamente, todos os registros lá da tua tabela; Com cada registro, vc cria um objeto Lista; adiciona esse Lista em um ArrayList; e finalmente, retorna o ArrayList, cheeeeio de objetos Lista.
Verdadiii Mantu…
deu certinho agora…
vlw amigo pela ajuda e pelas explicações
abraço…
:thumbup:
Bom dia Galera …
tenho uma dúvida …
o meu JComboBox ta aparecendo o nome …
e na ArrayList tem o nome e o codigo …
gostaria de saber como eu faço pra continuar vendo o nome mas salvar somente o codigo no Banco …
eu tava tentando algo do tipo:
String fornec = ((Lista)fornec1.setSelectedItem(codigo));
abraço galera
Quem é “fornec1”? Tá muito confusa essa sua pergunta… tem como explicar melhor?
opa tem sim …
fornec1 eh o meu comboBox…
no meu combo ta aparecendo o nome… e no ArrayList tem o nome e o codigo … eu gostaria de qnd eu clicasse no botão salvar … ele nao pegasse o nome … mas sim o codigo do nome …
eu tava fazendo assim :
String fornec = fornec1.getSelectedItem().toString();
mas assim ele salva o q ta no combo …
queria no comobo aparecesse o nome mas na hora de salvar ele pegasse o codigo …
não se ta mais claro … qqr coisa eu tento explicar novamente…
abraço…
Tenta assim:
String fornec = ((Lista)fornec1.getSelectedItem()).getCodigo();
AEEEE …
mais uma vez obraigadoo …
deu certinhoo rs…
abraço
Eai pessoal tenho uma duvida …
tava querendo fazer algo assim:
eu tenho o ComboBox que aparece o nome … mas na ArrayList tem tudo … nome, end, cidade …etc
eu queria q qnd eu escolhesse o nome… ele preenchesse os outros campos … eu tava tendo assim … achei q daria certo … mas nao da …
String end = ((Cliente)busca.getSelectedItem()).getEndereco();
Endereco1.setText(end);
//busca eh nome do meu ComboBox…
não da erro mas tb nao roda …
vlw abraço amigos…
ah, eu coloquei isso dentro do codigo…
*** :thumbup:
Dentro do Codigo nao … desculpa …
dentro do ComboBox …
Alguem poderia me ajudar ?
obrigado …
Uma alternativa seria vc fazer algo assim:
Cliente cli = (Cliente)busca.getSelectedItem();
Endereco1.setText(cli.getEndereco());
campoDeTextoParaONome.setText(cli.getNome());
campoDeTextoParaOCpf.setText(cli.getCPF());
//E assim por diante...
Tentei fazer…
mas está dando o seguinte :
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
oq sera?
tipo o Codigo tava dentro do ActionPerformed do ComboBox…
e tava dando isso …
aí colokei em um Botão e deu certo …
alguem sabe pq ??
como devo fazer …??
vlw galera
Voce pode comprar o libro Entendendo e Dominando o Java, Editora Digerati, que possui nos capítulos exatamente o que voce procura…
At,
eh ozielneto,
acho q vou fazer isso msm …
mto obrigado pela sua ajuda ,…
foi de grande utilidade… não sei como não tive essa ideia antes…rs
desse jeito resolverei todos os meus problemas…
vlw cara …
um abraço bem forte pra vc …