Duvida Pacote DAO Remove

[quote=nel][quote=Patricia SS]kkk eu ja estou pensando em desistir :x

cm assim algo antes?[/quote]

Só acrescentando, o erro é basicamente isso aqui:

suaList.add(0);
suaList.add(1);
suaList.remove(2);

O que há de errado? Você tem dois elementos na lista e tenta remover o da posição três (lembre-se, inicia-se em 0, portanto, 0-1-2), e gera aquela exceção.
Por isso o machado disse que pode ser algo antes do remove :smiley:

Abraços.[/quote]
Eu me refiro a um provável e possível erro em alguma parte do DAO, seja ao buscar o Driver, ao criar a Connection, ao criar a PreparedStatement ou ao executá-la.
Isto pelo fato de toda esta parte ser anterior à exception lançada quando há a tentativa de eliminar a linha selecionada.

[quote=drsmachado][quote=nel][quote=Patricia SS]kkk eu ja estou pensando em desistir :x

cm assim algo antes?[/quote]

Só acrescentando, o erro é basicamente isso aqui:

suaList.add(0);
suaList.add(1);
suaList.remove(2);

O que há de errado? Você tem dois elementos na lista e tenta remover o da posição três (lembre-se, inicia-se em 0, portanto, 0-1-2), e gera aquela exceção.
Por isso o machado disse que pode ser algo antes do remove :smiley:

Abraços.[/quote]
Eu me refiro a um provável e possível erro em alguma parte do DAO, seja ao buscar o Driver, ao criar a Connection, ao criar a PreparedStatement ou ao executá-la.
Isto pelo fato de toda esta parte ser anterior à exception lançada quando há a tentativa de eliminar a linha selecionada.[/quote]

Há perfeito, fui mais especifico a exceção do Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1. :slight_smile:

Agora sim q ñ intendi nd u_ú

Patricia, se concentra primeiramente no que o Machado disse.
O que eu exemplifiquei foi que tu postou uma exceção, essa:

Conectando ao banco   
Conectando ao banco   
Conectando ao banco   
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1   
        at java.util.Vector.removeElementAt(Vector.java:515)   
        at javax.swing.table.DefaultTableModel.removeRow(DefaultTableModel.java:446)   
        at projetofinalpatriciass.excluirproduto.excluirproduto(excluirproduto.java:442)   
        at projetofinalpatriciass.excluirproduto.jButtonexcluirprodutoActionPerformed(excluirproduto.java:319)   
        at projetofinalpatriciass.excluirproduto.access$000(excluirproduto.java:27)   
        at projetofinalpatriciass.excluirproduto$1.actionPerformed(excluirproduto.java:113)   
        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.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)   
        at java.awt.Component.processMouseEvent(Component.java:6288)   
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)   
        at java.awt.Component.processEvent(Component.java:6053)   
        at java.awt.Container.processEvent(Container.java:2041)   
        at java.awt.Component.dispatchEventImpl(Component.java:4651)   
        at java.awt.Container.dispatchEventImpl(Container.java:2099)   
        at java.awt.Component.dispatchEvent(Component.java:4481)   
        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:4481)   
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)   
        at java.awt.EventQueue.access$000(EventQueue.java:84)   
        at java.awt.EventQueue$1.run(EventQueue.java:602)   
        at java.awt.EventQueue$1.run(EventQueue.java:600)   
        at java.security.AccessController.doPrivileged(Native Method)   
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)   
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)   
        at java.awt.EventQueue$2.run(EventQueue.java:616)   
        at java.awt.EventQueue$2.run(EventQueue.java:614)   
        at java.security.AccessController.doPrivileged(Native Method)   
        at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)   
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)   
        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)   
Conectando ao banco  

A exceção ocorre aqui at projetofinalpatriciass.excluirproduto.excluirproduto(excluirproduto.java:442).
É muito provavel que tu esteja dando um remove na sua DefaultTableModel em uma posição inexistente, entende?
Como se tu tivesse 5 itens na sua TableModel e tentasse remover o item de número 6. Veja quantos valores há inseridos nela e a posição que está passando para ser removida.

Abraços.

Eu costumo fazer os testes do DAO antes de implementar em qualquer lugar.
Crie um main e faça o teste. Se passar pelo menos no main vc saberá que o problema não
é o DAO.

//DAO
public boolean deletarProduto(Produto produto) throws SQLException {
		String sql = "select * from produto";
		PreparedStatement ps = factory.getConnection().prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		while(rs.next()){
			if(rs.getInt(1) == produto.getPkproduto()){
				sql = "DELETE FROM produto WHERE pkproduto = ?";
				ps = factory.getConnection().prepareStatement(sql);
				ps.setInt(1, produto.getPkproduto());
				ps.execute();
				ps.close();
				return true;				
			}
		}
		ps.close();
		return false;
	}

//Main
public static void main(String[] args) {
		ProdutoDao dao = new ProdutoDao();
		Produto produto = new Produto();
		produto.setPkproduto(6);
		
		try {
			if(dao.deletarProduto(produto)){
				System.out.println("deletado");
			}else{
				System.out.println("Id não encontrado");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}		
	}

Faça o teste ai. valeu

[quote=Master.Abs]Eu costumo fazer os testes do DAO antes de implementar em qualquer lugar.
Crie um main e faça o teste. Se passar pelo menos no main vc saberá que o problema não
é o DAO.

//DAO
public boolean deletarProduto(Produto produto) throws SQLException {
		String sql = "select * from produto";
		PreparedStatement ps = factory.getConnection().prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		while(rs.next()){
			if(rs.getInt(1) == produto.getPkproduto()){
				sql = "DELETE FROM produto WHERE pkproduto = ?";
				ps = factory.getConnection().prepareStatement(sql);
				ps.setInt(1, produto.getPkproduto());
				ps.execute();
				ps.close();
				return true;				
			}
		}
		ps.close();
		return false;
	}

//Main
public static void main(String[] args) {
		ProdutoDao dao = new ProdutoDao();
		Produto produto = new Produto();
		produto.setPkproduto(6);
		
		try {
			if(dao.deletarProduto(produto)){
				System.out.println("deletado");
			}else{
				System.out.println("Id não encontrado");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}		
	}

Faça o teste ai. valeu[/quote]

Sempre faço isso mesmo.
Geralmente, meu DAO contém todas as possibilides do CRUD, então, já insiro, pesquiso e removo.
Deu certo, to programando…