CREATE TABLE CATEGORIA
(
ID INTEGER IDENTITY NOT NULL,
CATEG VARCHAR(100) NULL,
NOME VARCHAR(100) NULL,
CONSTRAINT PK_CATEGORIA PRIMARY KEY(ID)
)
CLASSE DAO
public void gravaDados(Categoria categoria)throws Erro{
try{
String grava = "INSERT INTO CATEGORIA (CATEG, NOME) VALUES (?,?)";
PreparedStatement pre = con.prepareStatement(grava);
// pre.setInt(1, categoria.getCodigo());
pre.setString(1, categoria.getCategoria());
pre.setString(2, categoria.getNome());
pre.executeUpdate();
}
catch(SQLException e){
throw new Erro("ERRO INSERIR",e);
}
}
public void excluiDados(Categoria categoria)throws Erro{
try{
String excluir = "DELETE FROM CATEGORIA WHERE ID = ?";
PreparedStatement pre = con.prepareStatement(excluir);
pre.setInt(1, categoria.getCodigo());
pre.executeUpdate();
}
catch(SQLException e){
throw new Erro("ERRO EXCLUIR");
}
}
public void atualizaDados(Categoria categoria)throws Erro{
try{
String troca = "UPDATE CATEGORIA SET ID=?, NOME=? WHERE CATEG=?";
PreparedStatement pre = con.prepareStatement(troca);
pre.setInt(1, categoria.getCodigo());
pre.setString(2, categoria.getNome());
pre.setString(3, categoria.getCategoria());
pre.executeUpdate();
}
catch(SQLException e){
throw new Erro("ERRO ATUALIZAR");
}
}
GUI
GRAVE: null
exceptions.Erro: ERRO EXCLUIR
at persistence.DaoCategoria.excluiDados(DaoCategoria.java:55)
at gui.CadastroCategoria.ExcluirActionPerformed(CadastroCategoria.java:135)
at gui.CadastroCategoria.access$100(CadastroCategoria.java:12)
at gui.CadastroCategoria$2.actionPerformed(CadastroCategoria.java:46)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:231
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
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:423
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:416
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:247
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)
agora fica mais facil a interpretação do codigo! kkkkkkkkkkk
referente ao insert realmente tinhha erro na linha comentada, não precisa passar o ID, pois o mesmo é auto-incremmet, agora no excluir não consegui achar erro nem de sintaxe muito menos de lógica, mais pelo log de erro informado, a unica coisa que vem a mente é saber se o objeto “Categoria que você está passando não esta NULL”, pois pelo erro parece que o objeto passado por parametro não está populado, ou o atributo ID está sem popular, ou seja = NULL!
[quote=RafaelCassau]agora fica mais facil a interpretação do codigo! kkkkkkkkkkk
referente ao insert realmente tinhha erro na linha comentada, não precisa passar o ID, pois o mesmo é auto-incremmet, agora no excluir não consegui achar erro nem de sintaxe muito menos de lógica, mais pelo log de erro informado, a unica coisa que vem a mente é saber se o objeto “Categoria que você está passando não esta NULL”, pois pelo erro parece que o objeto passado por parametro não está populado, ou o atributo ID está sem popular, ou seja = NULL!
public void excluiDados(Categoria categoria)throws Erro{
try{
String excluir = "DELETE FROM CATEGORIA WHERE ID = ?";
PreparedStatement pre = con.prepareStatement(excluir);
pre.setInt(1, categoria.getCodigo()); // ACHO QUE O OBJETO CATEGORIA ESTA NULL, OU DEVE TER ALGUM ATRIBUTO SEM POPULAR, PROVAVELMENTE O ID!!!
pre.executeUpdate();
}
catch(SQLException e){
throw new Erro("ERRO EXCLUIR");
}
}
aki você ta passando o objeto CATEGORIA populado, ou seja com todos os seus valores atribuidos
e o nome do metodo é excluiDados certo?
public void excluiDados(Categoria categoria)throws Erro{ // ou seja o nome do metodo a ser chamado é excluiDados
try{
String excluir = "DELETE FROM CATEGORIA WHERE ID = ?";
PreparedStatement pre = con.prepareStatement(excluir);
pre.setInt(1, categoria.getCodigo());
pre.executeUpdate();
}
E esse metodo abaixo é onde você passa o objeto categoria populado para o metodo excluiDados, mais o nome do metodo chamado é excluiDado, ou seja esta faltando um ‘S’
cara os nomes dos metodos estão diferentes denovo, eles tem q ser iguais o nome desse metodo esta novamente sem ‘s’, e isso não pode, vc esta trabalhando com JDBC ou com Hibernate ou JPA?
se estiver trabalhando com JDBC puro então o correto seria:
public void excluiDados(Categoria categoria)throws Erro{
try{
String excluir = "DELETE FROM CATEGORIA WHERE ID = ?";
PreparedStatement pre = con.prepareStatement(excluir);
pre.setInt(1, categoria.getCodigo());
pre.executeUpdate();
}
catch(SQLException e){
throw new Erro("ERRO EXCLUIR",e);
}
}