Inserir dados no banco, utilizando combobox

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…

[code]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;[/code]

Meu list da combo

[code] public List Combo() {
List strList = new ArrayList();
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;}

[/code]

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!

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

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.