Problemas com Dao

3 respostas
Vinicius_Sartori

Eu estou montando uma classe Dao e quando adicionei o motodo de listar contatos dentro dela começaram a aparecer uma série de erros, alguem poderia me ajudar?(desculpem eu estar enchendo o saco :P)

package br.com.caelum.jdbc.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.caelum.jdbc.ConnectionFactory;
import br.com.caelum.jdbc.modelo.Contato;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class ContatoDAO {
	
	private Connection connection;
	public ContatoDAO() throws SQLException{
		this.connection = ConnectionFactory.getConnection();
	
			}
	public void adiciona(Contato contato) throws SQLException{
		
		//PreparedStatement stmt = this.connection.PreparedStatement("insert into contatos (nome,email, endereco) values (?,?,?)");
		PreparedStatement stmt = (PreparedStatement) this.connection .prepareStatement("insert into contatos (nome,email,endereco), values (?,?,?");
		
		
		stmt.setString(1, contato.getNome());
		stmt.setString(2, contato.getEmail());
		stmt.setString(3, contato.getEndereco());
		
		//executa
		stmt.execute();
		stmt.close();
	}
	PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from contatos");
	ResultSet rs = stmt.executeQuery();
	
	List<Contato> contatos = new ArrayList<Contato>();

	while (rs.next()){
		//criando o objeto Contato
		Contato contato = new Contato();
		contato.setNome(rs.getString("nome"));
		contato.setEmail(rs.getString("email"));
		contato.setEndereco(rs.getString("endereco"));
		
		//adiciona objeto a lista
		contatos.add(contato);
	}
	
rs.close();
stmt.close();
return contatos;


	
}
	
	
}

abaixo o relátorio da saida de erros
[IMG]http://i6.photobucket.com/albums/y208/radamantes/erros2.png[/IMG]

3 Respostas

gui_sv

Vc criou o metodo adiciona certinho …

mas vc esta errando no metodo que captura todos os contatos do banco …

ele deve ter uma assinatura (nome do metodo) parecida com a que vc fez para o adiciona

veja

public List<Contato> pegaTodosOsContatos() { // EH ESTA LINHA Q FALTA
PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from contatos");
	ResultSet rs = stmt.executeQuery();
	
	List<Contato> contatos = new ArrayList<Contato>();

	while (rs.next()){
		//criando o objeto Contato
		Contato contato = new Contato();
		contato.setNome(rs.getString("nome"));
		contato.setEmail(rs.getString("email"));
		contato.setEndereco(rs.getString("endereco"));
		
		//adiciona objeto a lista
		contatos.add(contato);
	}
	
rs.close();
stmt.close();
return contatos;
}

espero ter ajudado

Tche

Olá Viniciu, tudo bem?

Cara, a última chave do seu código está sobrando. Você colocou após ter fechado o corpo da classe.

E o código

PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from contatos");  
     ResultSet rs = stmt.executeQuery();  
       
     List<Contato> contatos = new ArrayList<Contato>();  
   
     while (rs.next()){  
         //criando o objeto Contato  
         Contato contato = new Contato();  
         contato.setNome(rs.getString("nome"));  
         contato.setEmail(rs.getString("email"));  
         contato.setEndereco(rs.getString("endereco"));  
           
         //adiciona objeto a lista  
         contatos.add(contato);  
     }  
       
 rs.close();  
 stmt.close();  
 return contatos;

é um método não!?

faltou você declara o método, que neste caso provavelmento é um

public List<Contato> listarContatos();
Vinicius_Sartori

se eu adiciono este metodo o problema somente piora

Criado 24 de novembro de 2008
Ultima resposta 24 de nov. de 2008
Respostas 3
Participantes 3