[RESOLVIDO] Projeto em Java

Ola pessoal
Eu estou tendo um problema nesse codigo:
public void preencherTabela(String Sql){

    ArrayList dados = new ArrayList();
    String[] colunas = new String[]{"Codigo","Nome","RG","CPF","NomeDoVeiculo","NúmeroDoApartamneto","NúmeroDaCasa","Placa"};
    conex.conecta(); 
    conex.executaSql(Sql);
    try{
         conex.rs.first();
         do{
             dados.add(new Object[]{conex.rs.getInt("codigo"),
                                    conex.rs.getString("nome"),
                                    conex.rs.getString("rg"), 
                                    conex.rs.getString("cpf"),
                                    conex.rs.getString("nomedoveiculo"),
                                    conex.rs.getString("númerodoapartamento"),
                                    conex.rs.getString("númerodacasa"),
                                    conex.rs.getString("placa")});
           }while(conex.rs.next());
       }catch(SQLException ex){
           JOptionPane.showMessageDialog(rootPane, "Busque por outro morador para preencher tabela");           
       } 
    ModeloTabela modelo = new ModeloTabela(dados, colunas);
    jTableMoradores.setModel(modelo); 
    jTableMoradores.getColumnModel().getColumn(0).setPreferredWidth(80);
    jTableMoradores.getColumnModel().getColumn(0).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(1).setPreferredWidth(140);
    jTableMoradores.getColumnModel().getColumn(1).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(2).setPreferredWidth(100);
    jTableMoradores.getColumnModel().getColumn(2).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(3).setPreferredWidth(100);
    jTableMoradores.getColumnModel().getColumn(3).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(4).setPreferredWidth(122);
    jTableMoradores.getColumnModel().getColumn(4).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(5).setPreferredWidth(164);
    jTableMoradores.getColumnModel().getColumn(5).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(6).setPreferredWidth(144);
    jTableMoradores.getColumnModel().getColumn(6).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(7).setPreferredWidth(114);
    jTableMoradores.getColumnModel().getColumn(7).setResizable(false);      
    jTableMoradores.getTableHeader().setReorderingAllowed(false);
    jTableMoradores.setAutoResizeMode(jTableMoradores.AUTO_RESIZE_OFF);
    jTableMoradores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
    conex.desconecta();
}

Todo vez que eu abro o botão por exemplo de moradores ela aparece isso: Busque por outro morador para preencher tabela e quando eu tento salvar na tabela e aparece isso: Busque por outro morador para preencher tabela também.

Alguém pode me ajudar???

Boa tarde, troque isso:

       } catch(SQLException ex){
           JOptionPane.showMessageDialog(rootPane, "Busque por outro morador para preencher tabela");           
       } 

por isso:

       } catch(SQLException ex){
           ex.printStackTrace();           
       } 

E manda o erro

Esta aqui o erro

org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next.
at org.postgresql.jdbc.PgResultSet.checkResultSet(PgResultSet.java:2770)
at org.postgresql.jdbc.PgResultSet.getInt(PgResultSet.java:2039)
at org.postgresql.jdbc.PgResultSet.getInt(PgResultSet.java:2495)
at telas.TelaMoradores.preencherTabela(TelaMoradores.java:684)
at telas.TelaMoradores.(TelaMoradores.java:31)
at telas.TelaPrincipal.jButtonCadMoradoresActionPerformed(TelaPrincipal.java:364)
at telas.TelaPrincipal.access$100(TelaPrincipal.java:16)
at telas.TelaPrincipal$2.actionPerformed(TelaPrincipal.java:134)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next.
at org.postgresql.jdbc.PgResultSet.checkResultSet(PgResultSet.java:2770)
at org.postgresql.jdbc.PgResultSet.getInt(PgResultSet.java:2039)
at org.postgresql.jdbc.PgResultSet.getInt(PgResultSet.java:2495)
at telas.TelaMoradores.preencherTabela(TelaMoradores.java:684)
at telas.TelaMoradores.jButtonSalvarActionPerformed(TelaMoradores.java:639)
at telas.TelaMoradores.access$000(TelaMoradores.java:20)
at telas.TelaMoradores$1.actionPerformed(TelaMoradores.java:133)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Estranho, executei seu código aqui e funcionou.

at telas.TelaMoradores.preencherTabela(TelaMoradores.java:684)
Essa linha 684, é onde vc chama o método?

o que faco então???

Mudei pouca coisa (nome das colunas e algumas variaveis), mas funcionou:


Me manda o que tem na linha 684

684
e essa linha:

dados.add(new Object[]{conex.rs.getInt("codigo"),
                   conex.rs.getString("nome"),
                   conex.rs.getString("rg"), 
                   conex.rs.getString("cpf"),
                   conex.rs.getString("nomedoveiculo"),
                   conex.rs.getString("númerodoapartamento"),
                   conex.rs.getString("númerodacasa"),
                   conex.rs.getString("placa")});

OK, vamos fazer uns testes, troca o Do While, por While:

        while (conex.rs.next()) {
            dados.add(new Object[]{
               conex.rs.getInt("codigo"),
               conex.rs.getString("nome"),
               conex.rs.getString("rg"), 
               conex.rs.getString("cpf"),
               conex.rs.getString("nomedoveiculo"),
               conex.rs.getString("númerodoapartamento"),
               conex.rs.getString("númerodacasa"),
               conex.rs.getString("placa")});
        }

Não deu erro nenhum, mais ainda não esta salvando na tabela, o que eu faço???

Ficou assim agora
public void preencherTabela(String Sql){

    ArrayList dados = new ArrayList();
    String[] colunas = new String[]{"Codigo","Nome","RG","CPF","NomeDoVeiculo","NúmeroDoApartamneto","NúmeroDaCasa","Placa"};
    conex.conecta(); 
    conex.executaSql(Sql);
    try{
         while(conex.rs.next()){
             dados.add(new Object[]{conex.rs.getInt("codigo"),
                                    conex.rs.getString("nome"),
                                    conex.rs.getString("rg"), 
                                    conex.rs.getString("cpf"),
                                    conex.rs.getString("nomedoveiculo"),
                                    conex.rs.getString("númerodoapartamento"),
                                    conex.rs.getString("númerodacasa"),
                                    conex.rs.getString("placa")});
           }while(conex.rs.next());
       }catch(SQLException ex){
           ex.printStackTrace();          
       } 
    ModeloTabela modelo = new ModeloTabela(dados, colunas);
    jTableMoradores.setModel(modelo); 
    jTableMoradores.getColumnModel().getColumn(0).setPreferredWidth(80);
    jTableMoradores.getColumnModel().getColumn(0).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(1).setPreferredWidth(140);
    jTableMoradores.getColumnModel().getColumn(1).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(2).setPreferredWidth(100);
    jTableMoradores.getColumnModel().getColumn(2).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(3).setPreferredWidth(100);
    jTableMoradores.getColumnModel().getColumn(3).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(4).setPreferredWidth(122);
    jTableMoradores.getColumnModel().getColumn(4).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(5).setPreferredWidth(164);
    jTableMoradores.getColumnModel().getColumn(5).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(6).setPreferredWidth(144);
    jTableMoradores.getColumnModel().getColumn(6).setResizable(false);
    jTableMoradores.getColumnModel().getColumn(7).setPreferredWidth(114);
    jTableMoradores.getColumnModel().getColumn(7).setResizable(false);      
    jTableMoradores.getTableHeader().setReorderingAllowed(false);
    jTableMoradores.setAutoResizeMode(jTableMoradores.AUTO_RESIZE_OFF);
    jTableMoradores.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
    conex.desconecta();
}
while(conex.rs.next()){
....
} while(conex.rs.next());

Não precisa de dois while, só deixa o primeiro.


Como assim salvando? Esse método aí é pra mostrar os dados do banco na tabela. Mostra o método pra salvar os dados no banco

eu sei , mais eu tenho um botão pra salvar os dados no banco de dados

com esse código:

if(jTextFieldNome.getText().isEmpty()){
            JOptionPane.showMessageDialog(null,"preencha o nome para continuar");
            jTextFieldNome.requestFocus();
        }else if(jTextFieldRG.getText().isEmpty()){
            JOptionPane.showMessageDialog(null,"preencha o rg para continuar");
            jTextFieldRG.requestFocus();
        }else if(jTextFieldCPF.getText().isEmpty()){
            JOptionPane.showMessageDialog(null,"preencha o cpf para continuar");
            jTextFieldCPF.requestFocus();
        }else if(jTextFieldNomeDoVeiculo.getText().isEmpty()){
            JOptionPane.showMessageDialog(null,"preencha o nomedoveiculo para continuar");
            jTextFieldNomeDoVeiculo.requestFocus();
        }else if(jTextFieldNúmeroDoApartamento.getText().isEmpty()){
            JOptionPane.showMessageDialog(null,"preencha o númerodoapartamento para continuar");
            jTextFieldNúmeroDoApartamento.requestFocus();
        }else if(jTextFieldNúmeroDaCasa.getText().isEmpty()){
            JOptionPane.showMessageDialog(null,"preencha o númerodacasa para continuar");
            jTextFieldNúmeroDaCasa.requestFocus();
        }else

        if(salvar==true){
            mod.setNome(jTextFieldNome.getText());
            mod.setRG(jTextFieldRG.getText());
            mod.setCPF(jTextFieldCPF.getText());
            mod.setNomeDoVeiculo(jTextFieldNomeDoVeiculo.getText());
            mod.setPlaca(jTextFieldPlaca.getText());
            mod.setNúmeroDoApartamento(jTextFieldNúmeroDoApartamento.getText());
            mod.setNúmeroDaCasa(jTextFieldNúmeroDaCasa.getText());
            control.Salvar(mod);
            jTextFieldNome.setText("");
            jTextFieldRG.setText("");
            jTextFieldCPF.setText("");
            jTextFieldNomeDoVeiculo.setText("");
            jTextFieldPlaca.setText("");
            jTextFieldNúmeroDoApartamento.setText("");
            jTextFieldNúmeroDaCasa.setText("");
            jTextFieldNome.setEnabled(false);
            jTextFieldRG.setEnabled(false);
            jTextFieldCPF.setEnabled(false);
            jTextFieldNomeDoVeiculo.setEnabled(false);
            jTextFieldPlaca.setEnabled(false);
            jTextFieldNúmeroDoApartamento.setEnabled(false);
            jTextFieldNúmeroDaCasa.setEnabled(false);
            jButtonSalvar.setEnabled(false);
            jButtonCancelar.setEnabled(false);
            preencherTabela("select *from morador order by nome");

        }else{
            mod.setCodigo(Integer.parseInt(jTextFieldCOD.getText()));
            mod.setNome(jTextFieldNome.getText());
            mod.setRG(jTextFieldRG.getText());
            mod.setCPF(jTextFieldCPF.getText());
            mod.setNomeDoVeiculo(jTextFieldNomeDoVeiculo.getText());
            mod.setPlaca(jTextFieldPlaca.getText());
            mod.setNúmeroDoApartamento(jTextFieldNúmeroDoApartamento.getText());
            mod.setNúmeroDaCasa(jTextFieldNúmeroDaCasa.getText());
            control.Editar(mod);
            jTextFieldCOD.setText("");
            jTextFieldNome.setText("");
            jTextFieldRG.setText("");
            jTextFieldCPF.setText("");
            jTextFieldNomeDoVeiculo.setText("");
            jTextFieldPlaca.setText("");
            jTextFieldNúmeroDoApartamento.setText("");
            jTextFieldNúmeroDaCasa.setText("");
            jTextFieldNome.setEnabled(false);
            jTextFieldRG.setEnabled(false);
            jTextFieldCPF.setEnabled(false);
            jTextFieldNomeDoVeiculo.setEnabled(false);
            jTextFieldPlaca.setEnabled(false);
            jTextFieldNúmeroDoApartamento.setEnabled(false);
            jTextFieldNúmeroDaCasa.setEnabled(false);
            jButtonSalvar.setEnabled(false);
            jButtonNovo.setEnabled(true);
            jButtonCancelar.setEnabled(false);
            preencherTabela("select *from morador order by nome");

        }

nossa, seu código está um pouco bagunçado.

antes de começar vou te dar umas dicas, até pra vc se achar melhor depois.

Quando for fazer coisas do tipo: limpar campos, setar como false e etc, cria um método, e depois só chama o método. Tipo:

private void campos_default() {
    //Limpar os Campos
    jTextFieldNome.setText("");
    jTextFieldRG.setText("");
    jTextFieldCPF.setText("");
    jTextFieldNomeDoVeiculo.setText("");
    jTextFieldPlaca.setText("");
    jTextFieldNúmeroDoApartamento.setText("");
    jTextFieldNúmeroDaCasa.setText("");

    //Setar como false
    jTextFieldNome.setEnabled(false);
    jTextFieldRG.setEnabled(false);
    jTextFieldCPF.setEnabled(false);
    jTextFieldNomeDoVeiculo.setEnabled(false);
    jTextFieldPlaca.setEnabled(false);
    jTextFieldNúmeroDoApartamento.setEnabled(false);
    jTextFieldNúmeroDaCasa.setEnabled(false);
    jButtonSalvar.setEnabled(false);
    jButtonCancelar.setEnabled(false);
}

Aí na hora de chamar:

} else {
     ....
     campos_default();
}

Voltando a sua dúvida. Dá erro na hora de salvar? O que acontece?

quando eu clico no botão novo e coloco os dados pra depois apertar o botão salvar ele não aparece na tabela que eu tenha ai

Quando vc clicar em Novo, tem que setar seu botão como true

jButtonSalvar.setEnabled(true);

continua a mesma coisa da imagem de antes, o que eu faço???

Ahhhhh entendi, achei que o botão não estava funcionando.

Você quer atualizar sua tabela depois que inserir um dado??

Muda isso:

preencherTabela("select *from morador order by nome");

pra isso:

preencherTabela("SELECT * FROM morador ORDER BY nome");

continua como essa foto não salvando os dados na tabela, o que eu faço???

É difícil saber sem erros, sem nada. No seu banco tem algum dado?? Assim no olhometro é muito difícil de saber o real motivo

no meu banco de dados tem isso olha:

eu fiz as tabelas do banco e depois tentei inserir umas triggers e views nele.