Listando primeiro campo do banco de dados usando JDBC
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 .
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
Curtidas 0
Respostas
Davi Costa
28/04/2011
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
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
GOSTEI 0
João
28/04/2011
Obrigado pela ajuda . Vou testar anoite quando chegar em em casa .
GOSTEI 0