Inserir dados no banco, utilizando combobox

3 respostas
S

Possuo um metodo para inserir no banco onde possuo um campo para digitar o codigo de um servico...

Porem criei uma combobox que mostra o codigo e o nome do servico...

Queria que ao inves de digitar o codigo do servico e a descricao dele, eu pegue o dado da combo...

public boolean inserir(DomainObject domainObject) {
        Ocorrencia ocorrencia = (Ocorrencia) domainObject;

        try {




    Connection conn = Conexao.getConnection();

          


            String sql = "INSERT INTO ocorrencia VALUES (?,?,?,?,?,?,?)";


            PreparedStatement pst = conn.prepareStatement(sql);
            

            pst.setInt(1, ocorrencia.getIDOcorrencia());

// aqui é para inserir a descrição do servico vindo da combo
            pst.setString(2, ocorrencia.getDescricao());


            pst.setString(4, ocorrencia.getVeiculo().getPlaca());


            pst.setString(5, ocorrencia.getCliente().getNomecli());

            pst.setString(6,ocorrencia.getVeiculo().getNomeVeiculo());
// e aqui é para inserir o codigo vindo da combo
            pst.setInt(7,ocorrencia.getServicos().getCodigoServico());

pst.executeUpdate();


            pst.close();

    
            conn.close();



        } catch (Exception e) {
            return false;
        }
        return true;

Meu list da combo

public  List Combo()  {
 List<Ocorrencia> strList = new ArrayList<Ocorrencia>();
        try{

            Connection conn = Conexao.getConnection();

            String sql = null;
        
                    sql = "select idservico,nomeservico from tiposervico ";

            PreparedStatement pst = conn.prepareStatement(sql);
         
            ResultSet rs = pst.executeQuery();

while(rs.next()){
    Ocorrencia ocorrencia = new Ocorrencia();
    Servicos servico = new Servicos();


    servico.setCodigoServico(rs.getInt("idservico"));



    servico.setNomeServico(rs.getString("nomeservico"));
    
    ocorrencia.setServicos(servico);



    strList.add(ocorrencia);




   }

pst.close();
 rs.close();


        } catch (Exception e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e.getMessage());

        }



            return strList;}

3 Respostas

C

Você terá que alimentar o seu combo com os dados retornados do select feito no banco de dados.
No seu caso, alimentará o combo com o atributo strList.
Como você quer mostrar o código e o nome do serviço, você pode mostrar desta forma no combo:

1-Servico1
2-Servico2
3-Servico3
etc…

Assim, quando você for setar o componente selecionado, faça por exemplo:

String[]
str = combo.getSelectedItem().toString().split("-");

servico.setCodigoServico(str[0]);
servico.setNomeServico(str[1]);

Assim, você terá no seu método servico.getCodigoServico e servico.getNomeServico os atributos necessários para
realizar o insert na base de dados.

Espero ter ajudado e não confundido mais a sua cabeça. :slight_smile:

Abraço!

S

Desculpa mano… não entendi, pq minha combo ja esta retornando normal… preciso q no meu insert… ele receba o intem selecionado

pst.setInt(7,ocorrencia.getServicos().getCodigoServico())

eh para pegar da combo o codigo do servico

I

implemente um actionListener pra ele…
dentro dele vc pega o valor selecionado com o

int valor=(Integer)combo.getSelectedIndex();//o que te retorna um objeto

Com isso vc tem o valor para ser inserido.

Criado 22 de outubro de 2009
Ultima resposta 22 de out. de 2009
Respostas 3
Participantes 3