[Resolvido]Inserir dados na tabela com dao

2 respostas
Mariana.Vecci

oii gente, to com um probleminha, fiz o dao do cliente,videogame e pedido (contém as chaves estrangeiras de cliente e videogame), o cliente e o videogame eu consigo inserir certinho, mas o pedido nnão houve jeito de conseguir, se alguém puder me dar uma ajudinha

package model;


public class Pedido {

	private int codp;
    private Cliente cliente;
    private VideoGame videogame;
    
    
	public Pedido(int codp, Cliente cliente, VideoGame videogame) {
		super();
		this.codp = codp;
		this.cliente = cliente;
		this.videogame = videogame;
	}



	public Pedido(int codp2, int i, int j) {
		// TODO Auto-generated constructor stub
	}



	public int getCodp() {
		return codp;
	}

	public void setCodp(int codp) {
		this.codp = codp;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public VideoGame getVideogame() {
		return videogame;
	}

	public void setVideogame(VideoGame videogame) {
		this.videogame = videogame;
	}
    
    
	
}
package sql;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import model.Pedido;
import model.Cliente;
import model.VideoGame;

public class AcessoPedidoDAO implements PedidoDAO{

	public void inserir(Pedido p, Cliente c, VideoGame vg) throws AcessoPedidoException
    {
        Connection conexao = null;
        Statement comando = null;
        try
        {
            conexao = Conexao.getConexao();
            comando = conexao.createStatement();
            String sql = "INSERT INTO pedido VALUES ("+p.getCodp()+",'"+c.getCodc()+"',"+vg.getCodvg()+")";
            comando.executeUpdate(sql);
            comando.close();
        }
        catch(SQLException e)
        {
            throw new AcessoPedidoException("erro de inserção de pedido", e);
        }
        finally
        {
            if(conexao != null)
            {
                try
                {
                    conexao.close();
                }
                catch(SQLException e2)
                {
                }
            }
        }
    }

	@Override
	public void inserir(Pedido p) throws AcessoPedidoException {
		// TODO Auto-generated method stub
		
	}	
}
package sql;

import model.Pedido;


public interface PedidoDAO
{
	void inserir(Pedido p) throws AcessoPedidoException;


}
package sql;

import model.Cliente;
import model.Pedido;
import model.VideoGame;

public class TesteDAO {

	public static void main(String[] args)
    {
        Pedido p1 = new Pedido(66, 100, 1);
        Pedido p2 = new Pedido(67, 101, 3);
        PedidoDAO fonte = null;
        try
        {
        	
            fonte =  (PedidoDAO) new AcessoPedidoDAO();
            fonte.inserir(p1);
            fonte.inserir(p2);
            

        }
        catch(AcessoPedidoException e)
        {
            System.out.println("Acesso indisponível aos objetos");
        }
    }
		
}

beijokaas

2 Respostas

romarcio

Acho que é o seguinte.

Vc está usando este construtor

public Pedido(int codp2, int i, int j) {
		// TODO Auto-generated constructor stub
	}

porém ele não faz nada com os parametros recebidos.

Vc deve usar o outro construtor, e dai fazer assim:

Cliente c = new Cliente();
        c.setId(1);

        VideoGame vg = new VideoGame();
        vg.setId(1);

        Pedido p1 = new Pedido(1,c,vg);
        Pedido p2 = new Pedido(2,c,vg);
        PedidoDAO fonte = null; 
        ...

Veja, vc tem um tipo Cliente e um tipo VideoGame na classe Pedido, então vc deve inserir um Cliente e um VideoGame e não um int como estava tentando fazer.

Mariana.Vecci
Consegui arrumar com a ajuda do romarcio! ficou assim:
package sql;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import model.Pedido;
import model.Cliente;
import model.VideoGame;

public class AcessoPedidoDAO implements PedidoDAO{

	public void inserir(Pedido p) throws AcessoPedidoException
    {
        Connection conexao = null;
        Statement comando = null;
        try
        {
            conexao = Conexao.getConexao();
            comando = conexao.createStatement();
            String sql = "INSERT INTO pedido VALUES ("+p.getCodp()+",'"+p.getCliente().getCodc()+"',"+p.getVideogame().getCodvg()+")";
            comando.executeUpdate(sql);
            comando.close();
        }
        catch(SQLException e)
        {
            throw new AcessoPedidoException("erro de inserção de pedido", e);
        }
        finally
        {
            if(conexao != null)
            {
                try
                {
                    conexao.close();
                }
                catch(SQLException e2)
                {
                }
            }
        }
    }
}
Criado 10 de novembro de 2010
Ultima resposta 10 de nov. de 2010
Respostas 2
Participantes 2