Boa tarde a todos!
Como eu faço para mostrar vários itens (Strings) no meu jComboBox?
Puxo do banco de dados vários registros cadastrados, porém o primeiro registro esta aparecendo. Os outros que veem logo depois não aparece.
Eu a seguinte condição. Oq será q ta de errado? se eu coloco FIRST, tb nao da certo.
DAO
[code]
public String idObra;
public boolean result = false;
public boolean selecionaIdObra() throws SQLException
{
String sql = "select * from cad_obras";
PreparedStatement stmt = conexao.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
if (rs.next())
{
result = true;
idObra = rs.getString("id_obra");
}
return result;
}[/code]
Form
[code]public void mostrarIdObra()
{
try
{
ContratoDao dao = new ContratoDao();
dao.selecionaIdObra();
if (dao.result == true)
{
cbObra.addItem(dao.idObra);
}
else
{
JOptionPane.showMessageDialog(this, "Nenhuma obra cadastrada com este nome", "Erro", JOptionPane.ERROR_MESSAGE);
}
}
catch (SQLException erro)
{
JOptionPane.showMessageDialog(this, "Erro"+erro);
}
}[/code]
antes de mais nada, faça um método que retorne uma lista, e não um booelan dizendo se executou ou não, algo do tipo
public List<String> buscarOpcoes() {
//abrir conexão e execução da consulta aqui
List<String> valores = new ArrayList<String>();
while (rs.next()) {
valores.add(rs.getString(1));
}
return valores;
Feito isso percorra essa List populando o seu combo!
Digamos que vc tem uma Class com getters e setters ou um construtor desses objetos que vao vir do banco ai vc pode fazer:
[code]public void buscarOpcoes() {
//abrir conexão e execução da consulta aqui
while (rs.next()) {
int idFunc = rs.getInt(“ID_Func”);
String nome = rs.getString(“Nome_Funcionario”);
SuaClass sc = new SuaClass();
sc.set(idFunc);
sc.set(nome);
seuComboBox.add(sc);
}
[/code]
Lembrando que pra isso vc terá que sobreescrever seu método toString na SuaClass.
Hmm, isso mesmo… é a lista
já tinha até o código pronto, mas nao caiu a ficha.
maass, como eu uso DAO, fica um pouco diferente
Ai aparece agora somente um registro ainda, tenho 2 registros e esta aparecendo o segundo.
olha como eu criei a lista, na class DAO
[code]public List getListaIdObra() throws SQLException
{
String sql = “select * from cad_obras”;//“SELECT id_obra from cad_contratos”;
PreparedStatement stmt = this.conexao.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
List<CadContrato> minhaLista1 = new ArrayList<CadContrato>();
while (rs.next())
{
idObra = rs.getString("id_obra");
CadContrato c1 = new CadContrato();
c1.setObra(idObra);
minhaLista1.add(c1);
}
rs.close();
stmt.close();
return minhaLista1;
}[/code]
e chamei no Formulário assim
[code]public void aiai()
{
try
{
ContratoDao dao = new ContratoDao();
dao.getListaIdObra();
cbObra.addItem(dao.idObra);
}
catch (SQLException ex)
{
JOptionPane.showMessageDialog(this, ex, "Erro", JOptionPane.ERROR_MESSAGE, null);
}
}[/code]
O fato de você estar usando dao ou não, não tem nada a ver com o que você está fazendo, que ainda continua errado, você deve usar o retorno (no caso a lista) do teu método que faz a pesquisa, e não esse idObra!
este idObra é declarei ele emcima da lista como public para poder aparecer ele no formulário swing!
public String idObra;
mas a minha lista como fiz, nao esta retornando do método?
Está sim, mas aonde você a está usando?! Pelo que eu vi em lugar nenhum!
hmm, menos mal! vou tentar usar entao rs… uma hora da certo
Cara, para não me chamares de mal e reservar meu lugar no céu aushdaushduashdsa
public void aiai()
{
try
{
ContratoDao dao = new ContratoDao();
List<CadContrato> listaObras = dao.getListaIdObra();
for (CadContrato cc : listaObras)
cbObra.addItem(cc.getObra());
}
catch (SQLException ex)
{
JOptionPane.showMessageDialog(this, ex, "Erro", JOptionPane.ERROR_MESSAGE, null);
}
}
kkk que isso…só de ter ajudado com as repostas ali pra cima já estava dando uma luz melhor!
mas deu certo! e vou te falar…eu ia conseguir implementar isso, mas ia DEMORAR viu? eu tava pensando em outras coisas bem diferentes.
kkk que Deus lhe abençoe e reserve seu lugar no céu
obrigadao mesmo!
Até!!!