resumindo: o metodo atualizar tabela, e fazer uma inserção, deletar ou update tb da certo
ocorre o erro quando faço um insert,update ou delete e em seguida tento um atualizar tabela novamente.
segue os codigos:
classe conexao:
package OutrasClasses;
import java.sql.*;
import javax.swing.JOptionPane;
/**
*
* @author Cesar Schutz
*/
public class Conexao {
public static Connection con = null;
public static void conectar(){
try{
Class.forName("org.firebirdsql.jdbc.FBDriver");
con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:\\teste\\CONRAD.FDB", "SYSDBA", "masterkey");
}catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null, "erro no drive: "+e);
}catch(SQLException ex){
JOptionPane.showMessageDialog(null, "erro na conexao: "+ex);
}
}
classe onde possuo os metodos de comando sql
package OutrasClasses;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import jinternalframe.cadastros.JIClassesDeExames;
/**
*
* @author Cesar Schutz
*/
public class ObjetosClassesExames {
int cod;
String usuario,data,ref,descricao;
get's e set's dos atributos...
public ResultSet getConsultar() throws SQLException{
PreparedStatement stmtQuery = Conexao.con.prepareStatement("select * from tb_classesexames order by descricao");
ResultSet resultSet = stmtQuery.executeQuery();
return resultSet;
}
public void setCadastrar(){
String sql = "insert into TB_CLASSESEXAMES (descricao,operadora,dat,referencia) values(?,?,?,?)";
try{
PreparedStatement stmt = Conexao.con.prepareStatement(sql);
stmt.setString(1, getDescricao());
stmt.setString(2, getUsuario());
stmt.setString(3, getData());
stmt.setString(4, getRef());
stmt.executeUpdate();
stmt.close();
JOptionPane.showMessageDialog(null, "Classe de Exame salva com sucesso!\n\nSalvo por: "+getUsuario()+"\nNo dia: "+getData()+"\nRef.: "+getRef()+"\nDescrição: "+getDescricao());
Conexao.con.close();
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erro ao tentar fazer conexão com o banco de dados, contate o administrador.\nErro: "+e);
}
}
classe que chamo os metodos da duas classes anteriores
public void atualizarTabela(){
try{
Conexao.conectar();
ObjetosClassesExames objetoClasseExame = new ObjetosClassesExames();
ResultSet resultSet = objetoClasseExame.getConsultar();
//zerando toda a tabela (deixado-a vazia)
((DefaultTableModel) jTable1.getModel()).setNumRows(0);
jTable1.updateUI();
while(resultSet.next()){
//colocando dados na tabela
DefaultTableModel modelo = (DefaultTableModel) jTable1.getModel();
modelo.addRow(new String[] {Integer.toString(resultSet.getInt("cod")),resultSet.getString("referencia"),resultSet.getString("descricao")});
//colocando dados nos objetos
ObjetosClassesExames classeExame = new ObjetosClassesExames();
classeExame.setCod(resultSet.getInt("cod"));
classeExame.setRef(resultSet.getString("referencia"));
classeExame.setUsuario(resultSet.getString("operadora"));
classeExame.setData(resultSet.getString("dat"));
classeExame.setDescricao(resultSet.getString("descricao"));
classesExames.add(classeExame);
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, "Erro na conexao com o banco, contate o Adminitrador!\nErro: "+e);
}
}
public void botaoSalvarRegistro(){
//fazeendo a inserção no banco
Conexao.conectar();
ObjetosClassesExames objetoClassesExames = new ObjetosClassesExames();
objetoClassesExames.setDescricao(jTDescricao.getText().toUpperCase());
objetoClassesExames.setUsuario(jTUsuario.getText());
objetoClassesExames.setData(jTData.getText());
objetoClassesExames.setRef(jTRef.getText());
objetoClassesExames.setCadastrar();
//atualizando tabela
atualizarTabela();
o problema esta nesse ultimo codigo, quando abro a janela e executo o metodo atualizarTabela, ele atualiza sem problemas…
porem quando executo o metodo botaoSalvarRegistro ele salva o registro mas na hora de executar o atualizarTabela, ele da o seguinte erro:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.elementData(Vector.java:730)
at java.util.Vector.elementAt(Vector.java:473)
at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:649)
at javax.swing.JTable.getValueAt(JTable.java:2720)
at jinternalframe.cadastros.JIClassesDeExames$1.valueChanged(JIClassesDeExames.java:96)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:677)
at javax.swing.JTable.tableRowsDeleted(JTable.java:4512)
at javax.swing.JTable.tableChanged(JTable.java:4415)
at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296)
at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:261)
at javax.swing.table.DefaultTableModel.setNumRows(DefaultTableModel.java:321)
at jinternalframe.cadastros.JIClassesDeExames.atualizarTabela(JIClassesDeExames.java:52)
at jinternalframe.cadastros.JIClassesDeExames.botaoSalvarRegistro(JIClassesDeExames.java:197)
at jinternalframe.cadastros.JIClassesDeExames.jBSalvarRegistroActionPerformed(JIClassesDeExames.java:576)
at jinternalframe.cadastros.JIClassesDeExames.access$1500(JIClassesDeExames.java:29)
at jinternalframe.cadastros.JIClassesDeExames$13.actionPerformed(JIClassesDeExames.java:372)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
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:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
alguem ae sabe o que pode estar acontecendo?
fui forçar o erro agora e deu certo, tentei novamente sem mecher no codigo e deu o erro!
nao sei o que pode ser =/