Programa loja carro (2)

É o seguinte,tenho um comboBox no Cadastro Cliente com os carros e seus respectivos ids listados que foram salvos no Cadastro Carro.
Ao lado desse ComboBox tem um botao “Adicionar” e ao lado desse botão um JList que é pra onde os adicionados vao aparecer…
Mas,esta dando um erro que não consigo saber o que tem de errado,gostaria que alguem me desse umas dicas se possivel.
O erro é este:

[code]public boolean insertClienteCarro(int idcliente, int idcarro)throws ClienteSYDAOException{

     try{
     System.out.println("AQUI");
     Statement s =  b.createStatement();
              
     int affRow = s.executeUpdate("INSERT INTO Cliente_has_Carro VALUES ( "+idcliente+","
                                                                +idcarro+" )");
                  

      if(affRow>0){
          return true;
     }
                     

             
             
       }catch (SQLException ex){
                  
     throw new ClienteSYDAOException("Problema em inserir ClienteCarro: "+ex.getMessage()); //O ERRO APONTA ESTA LINHA!


   }
     return false;

     
 }[/code]

Agradeço desde ja

Cola aqui o stack trace do seu erro. Como é uma Exception que está sendo capturada, fica complicado de saber qual o tipo de problema que está acontecendo.

[]'s.

esse aqui

compile-single:
run-single:
AQUI
26/05/2009 12:04:11 GUI.CadastroCliente B_AdicionarPrefActionPerformed
SEVERE: null
DAO.ClienteSYDAOException
at DAO.ClienteMySQL.insertClienteCarro(ClienteMySQL.java:210)
at GUI.CadastroCliente.B_AdicionarPrefActionPerformed(CadastroCliente.java:433)
at GUI.CadastroCliente.access$400(CadastroCliente.java:34)
at GUI.CadastroCliente$5.actionPerformed(CadastroCliente.java:159)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6134)
at javax.swing.JComponent.processMouseEve
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Cara, faz o seguinte: dá uma olhada na classe ClienteMySQL e procure pela linha 210. Posta aqui o trecho de código dessa linha pra que eu entenda melhor a situação.

[]'s.

throw new ClienteSYDAOException("Problema em inserir ClienteCarro: "+ex.getMessage());

é aquela linha que eu citei ali em cima no codigo…

Olha eu realmente não sei, mas pode fazer isso:

 throw new ClienteSYDAOException("Problema em inserir ClienteCarro: "+ex.getMessage());

Dentro de um catch? O correto não seria um só dar um print com essa parte:

"Problema em inserir ClienteCarro: "+ex.getMessage()

Como eu disse anteriormente não sei ta errado ou não, é puro achismo :slight_smile:

[code]public boolean insertClienteCarro(int idcliente, int idcarro){
try{
System.out.println(“AQUI”);
Statement s = b.createStatement();

       int affRow = s.executeUpdate("INSERT INTO Cliente_has_Carro VALUES ( "+idcliente+", "+idcarro+" )");
                  
       if(affRow>0)
          return true;
             
     }catch (ClienteSYDAOException ex){
        System.out.println("Problema em inserir ClienteCarro: "+ex.getMessage()); //O ERRO APONTA ESTA LINHA!
     }
     return false;
 }[/code]

Tenta isso, nao testei o código só editei aqui no post

Mas ele esta dentro de um Catch ;/

vo testar

Olha deu certo,mas acontece o seguinte,eu adiciono o carro na JList mas não aparece na hora,só aparece quando eu Consultar o cadastro daquele cliente
novamente…tem algum jeito de aparecer na hora?

Como vc ta inserindo na jlist?

 ListPref.setModel(new DefaultListModel());

eu botei esse codigo dentro do init components

mas ai vc ta atribuindo uma DefaultListModel vazia

Sim eu pensei nisso tambem, mas mesmo assim aparece os adicionados mas como eu disse, só depois de consultar o cadastrado novamente
como eu arrumo isso?

Bom… ai depende, tem jeito de vc postar o código da atribuição depois da consulta pra eu dar uma olhada?

Esse é o codigo do botao Consultar …

[code]private void BbuscarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(tx7.getText().isEmpty()){
JOptionPane.showMessageDialog(this, “Entre com o código do cliente para busca-lo.”);
}else{
try{
Cliente c = clienteMySQL.getCliente(Integer.parseInt(tx7.getText()));//CONVERTE A ESCRITA DO CAMPO DE TEXTO PARA INT PRA PODER BUSCAR.
tx1.setText(c.getNmcliente());
tx2.setText(c.getTel1cliente());
tx5.setText(c.getTel2cliente());
tx3.setText(c.getCelcliente());
tx4.setText(c.getDesccarrocliente());
tx6.setText(c.getNtcliente());
Vector v = carroMySQL.getCarroPreferencial(Integer.parseInt(tx7.getText()));
for(int i = 0; i<ListPref.getModel().getSize();i++){
((DefaultListModel)(ListPref.getModel())).remove(0);
}
DefaultListModel modelo = (DefaultListModel)ListPref.getModel();
for(Carro carro : v){
modelo.addElement(carro);

}
    }   catch (CarroSYDAOException ex) {
            Logger.getLogger(CadastroCliente.class.getName()).log(Level.SEVERE, null, ex);
        }   catch (ClienteSYDAOException ex) {
            Logger.getLogger(CadastroCliente.class.getName()).log(Level.SEVERE, null, ex);
        }catch(NumberFormatException e){
            JOptionPane.showMessageDialog(this, "O código do carro deve ser um número.");
}
}[/code]

e ai tem o codigo que te mandei no outro post , são os unicos relacionados no Cadastro Cliente

Acho que agora entendi teu problema ^^
Tipo você insere o carro só que ele não aparece na hora que vc ta inserindo só depois dá consulta, é isso né?

Então… se for isso o problema não é tao grande assim, você só precisa atualizar o JList passando o list model na hora de inserir.

+/- igual vc faz aqui

[code]for(Carro carro : v){
modelo.addElement(carro);

}[/code]
conseguiu entender a idéia?

Axo que entendi, mas nao sei como farei isso rs…tem alguma ideia?

pra inserir os carros vc ta gravando em um Vector?

Se for isso é só fazer algo tipo:

[code]DefaultListModel listModel = new DefaultListModel();
for(int i = 0; i < vetor.size(); i++{
listModel.add(vetor.get(i));
}

MinhaJList.setModel(listModel);[/code]

a idéia é essa ai ^^ eu nao lembro se listModel é add ou addElement entao coloquei add mesmo ^^ to digitando aqui no forum

Isso não deu certo .;x