Problemas com passagem de objeto por parâmetro no DAO

2 respostas
Jordao_Bass

ola amigos boa tarde , estou com um problema na hora de passar o objeto por parametro pra minha Classe DAO , pois o metodo set q eu dou na minha main de teste nao aparece no get da minha classe dao , assim ele insere null no banco.

package modelo.dao;

import java.sql.Connection;

import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;

import modelo.ContatoVO;

public class DAO {
	private Connection conn;
	String url = "jbdc:postgresql://localhost:5432/agenda";
	String user = "postgres";
	String senha = "123789";

	public DAO() {

	}

	public void conectar() throws SQLException {
		conn = DriverManager.getConnection(url, user, senha);
		System.out.println("conexao realizada");
	}

	public void desconectar() throws SQLException {
		conn.close();
		System.out.println("conexao fechada");
	}

	
	public void retornaObjeto(ContatoVO contato) {
		ContatoVO Contato = new ContatoVO();
		// if (Contato.getNome().equals("")){
		
		String a = Contato.getEmail();
		String b = Contato.getNome();
		String c = Contato.getEndereco();
		// Calendar d = Contato.getDataNascimento();
		System.out.println(a + "   " + b + "    " + c + " ");
//	}else {System.out.println("objeto retornou vazio");}
		 
	}
	
	public void inserir(ContatoVO contato) throws SQLException {
		ContatoVO Contato = new ContatoVO();
		// if (Contato.getNome().equals(null))
		
		
		conectar();
		
		String sql = " insert into contato (nome,email,enderecos,datanascimento) values (?,?,?,?)   ";

		PreparedStatement ps = conn.prepareStatement(sql);

		ps.setString(1, Contato.getNome());
		ps.setString(2, Contato.getEmail());
		ps.setString(3, Contato.getEndereco());
		Date dataParaGravar = new Date(Calendar.getInstance().getTimeInMillis());
		ps.setDate(4, dataParaGravar);

		ps.executeUpdate();
		System.out.println("gravado");
		desconectar();

		// ps.setDate(4, new
		// java.sql.Date(Contato.getDataNascimento().getTime()) );
		// ps.setDate (4, new Date(Contato.getDataNascimento().getTime()));
		// ps.setDate(1,Contato.getDataNascimento() );
		// if

	}

	public void procurar() throws SQLException {

		conectar();

		PreparedStatement ps = conn.prepareStatement("select * from contato");

		// executa o select
		ResultSet rs = ps.executeQuery();

		while (rs.next()) {
			String nome = rs.getString("nome");
			String email = rs.getString("email");
			String endereco = rs.getString("enderecos");

			System.out.println(nome + " :" + email + " <===>" + endereco);

		}
		rs.close();
		ps.close();
		desconectar();

	}

}

classe vo

package modelo;
import java.sql.Date;
import java.util.Calendar;


public class ContatoVO {

	
	private String nome ;
	private String email ;
	private String endereco  ;
	private Calendar dataNascimento ;
	
	public ContatoVO() {
	
		
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public Calendar getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Calendar dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
	
}

classe teste

package modelo;

import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import modelo.dao.DAO;

public class TestDAO {

	public static void main(String[] args) throws ParseException {

		DAO dao = new DAO();
		ContatoVO contato = new ContatoVO();

		contato.setNome("jordao");
		contato.setEmail("[email removido]");
		contato.setEndereco("rua 123 ");

		// SimpleDateFormat dataFormat = new SimpleDateFormat("DD/MM/yyyy");

		contato.setDataNascimento(Calendar.getInstance()); // (dataFormat.parse("18/09/1990"));
		

		dao.retornaObjeto(contato);
		
		//** try {
//		dao.inserir(contato);	
		//	dao.procurar();

	//	} catch (SQLException e) {

			// TODO Auto-generated catch block
		//	e.printStackTrace();
	//}

	}

}

2 Respostas

A

Colega, você está passando o objeto como parâmetro, mas dentro dos seus métodos você está criando um objeto novo e usando os valores de atributos desse novo objeto criado, e não daquele que você passou por parâmetro.

Nos seus métodos retornaObjeto e inserir você tem que remover a linha

ContatoVO Contato = new ContatoVO();

e quando quiser usar os valores de atributos do objeto, referir-se àquele que foi passado por parâmetro. Por exemplo:

ao invés de

String a = Contato.getEmail();

seria

String a = contato.getEmail();
Jordao_Bass

vlw pela ajuda , mais nao sei se era isso pois consegui resolver . a unica coisa q fiz foi tirar o contrutor da classe ContatoVO e funcionou

mais muito obrigado ! ;D

Criado 6 de maio de 2012
Ultima resposta 6 de mai. de 2012
Respostas 2
Participantes 2