Fórum Listando primeiro campo do banco de dados usando JDBC #399984

28/04/2011

0

Olá pessoal eu estou fazendo uma tela no qual estou usando Swing com JDBC , na tela eu listo o primeiro campo da tabela e jogo nos campos da tela .

O Codigo no DAO fica assim

 public Transportadora primeiroCampo() {
        try {
            rs = executeQuery("SELECT * FROM TABTRANS");
        
               rs.first();
           
            Transportadora toReturn = new Transportadora();
            toReturn.setControle(rs.getInt("CONTROLE"));
            toReturn.setNome(rs.getString("NOME"));
            toReturn.setEndereco(rs.getString("ENDERECO"));
            toReturn.setCidade(rs.getString("CIDADE"));
            toReturn.setEstado(rs.getString("ESTADO"));
            toReturn.setTelefone(rs.getString("TELEFONE"));
            toReturn.setCnpj(rs.getString("CNPJ"));
            toReturn.setInscricao(rs.getString("INSCRICAO"));
            return toReturn;
          
        } catch (SQLException e) {
            System.out.println("Error: " + e.getMessage());
            return null;
        }
    }

na Tela Swing eu chamo assim

 private void iniciaMeusComponentes() throws SQLException {

       
        Transportadora trans = dao.primeiroCampo();


      
 
        jTextFieldCodigo.setText(String.valueOf(trans.getControle()));
        jTextFieldNome.setText(trans.getNome());
        jTextFieldEndereco.setText(trans.getEndereco());
        jTextFieldCidade.setText(trans.getCidade());
        jComboBoxEstado.setSelectedItem(trans.getEstado());
        jFormattedTel.setValue(trans.getTelefone());
        jFormattedCNP.setValue(trans.getCnpj());
        jTextFieldInscricao.setText(trans.getInscricao());

    }

isso esta funcionando normal , porém só abre a tela se existir registro no banco , se não tiver registro ele vai gerar o erro :

Error: Illegal operation on empty result set.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at br.com.cadastros.gui.TrasnportadoraFrm.iniciaMeusComponentes(TrasnportadoraFrm.java:664)
        at br.com.cadastros.gui.TrasnportadoraFrm.<init>(TrasnportadoraFrm.java:55)
        at br.com.cadastros.gui.Tela_Principal.jMenuItem2ActionPerformed(Tela_Principal.java:669)
        at br.com.cadastros.gui.Tela_Principal.access$400(Tela_Principal.java:20)
        at br.com.cadastros.gui.Tela_Principal$5.actionPerformed(Tela_Principal.java:390)
        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.AbstractButton.doClick(AbstractButton.java:357)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        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)

oquê eu estou querendo é abrir a tela mesmo que não tenha registro , tipo criar uma tela falando que ainda não tem algo cadastrado e que eu devo cadastrar ai passa para a tela como registro .

Alguém poderia me dar uma ajuda nisso .

Desde já Agradeço a atenção .



João

João

Responder

Posts

29/04/2011

Davi Costa

Altere esse trecho de código, para verificar se existe algum registro no banco:
private void iniciaMeusComponentes() throws SQLException {

       
        Transportadora trans = dao.primeiroCampo();


        if(trans == null){
            //seu novo tratamento
        }else{
          // continua fazendo oq fazia antes
 
        jTextFieldCodigo.setText(String.valueOf(trans.getControle()));
        jTextFieldNome.setText(trans.getNome());
        jTextFieldEndereco.setText(trans.getEndereco());
        jTextFieldCidade.setText(trans.getCidade());
        jComboBoxEstado.setSelectedItem(trans.getEstado());
        jFormattedTel.setValue(trans.getTelefone());
        jFormattedCNP.setValue(trans.getCnpj());
        jTextFieldInscricao.setText(trans.getInscricao());
        }

    }


O que provavelmente está acontecendo é que quando não tem registro no banco seus trans deve estar vindo nulo ou sem preenchimento de alguns campos.

Att Davi
Responder

Gostei + 0

29/04/2011

João


  Obrigado pela ajuda . Vou testar anoite quando chegar em em casa . 
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar