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?
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.