List by Mysql and Java foreign key

Asked

Viewed 335 times

0

I’m trying to select the dvds that the partner registered but I’m not getting, I wonder if someone can help me, the result of my code returns like this Result:

1 - null - null - null - null - null - null - 2

And only one result appears, I need him to check the entire bank and show the user only the dvds registered by him, to list all the dvds I got but this one is killing me.

Class Socio:

public class Socio {
    protected Long codigo;
    protected String nome;
    protected Integer telefone;
    protected Integer ddd;
    protected String email;
    protected String cpf;

    // getters e setters

    @Override
    public String toString() {
        String saida = cpf + " - " + nome + " - " + telefone + " - " + ddd
                + " - " + email + " - " + codigo;
        return saida;
    }

}

Class Dvd:

package dominio;

import java.util.Scanner;

public class Dvd {

    private Long codigo;
    protected String titulo;
    protected String genero;
    protected String descricaoGenero;
    protected Double duracao;
    protected String sinopse;
    protected String idioma;
    protected String legenda;
    protected Integer anoProducao;
    private Socio socio = new Socio();

    // getters e setters

    @Override
    public String toString() {
        Socio s = new Socio();
        String saida = titulo + " - " + genero + " - " + descricaoGenero
                + " - " + duracao + " - " + sinopse + " - " + idioma + " - "
                + anoProducao + " - " + codigo ;
        return saida;
    }

}

List method in DvdDao:

public Dvd listarDvdsPorCodigoSocio(Dvd f) throws SQLException{
    StringBuilder sql = new StringBuilder();
    sql.append("SELECT codigo, socio_codigo, titulo ");
    sql.append("FROM dvd ");
    sql.append("WHERE socio_codigo = ? ");

    Connection conexao = FabricaDeConexao.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());
    comando.setLong(1, f.getSocio().getCodigo());

    ResultSet resultado = comando.executeQuery();

    Dvd retorno = null;

    while(resultado.next()){
        retorno = new Dvd();
        retorno.setCodigo(resultado.getLong("codigo"));
        retorno.setTitulo(resultado.getString("titulo"));
        retorno.setTitulo(resultado.getString("socio_codigo"));
    } 
    return retorno;
}

And how I’m wearing it:

public void buscarDvdsPorSocio () throws SQLException{

    Dvd f2 = new Dvd();
    AdicionarSocioVisao e = new AdicionarSocioVisao();
    e.solicitarCodigoUsuario();
    f2.setSocio(e);

    try {

        DvdDAO fdao = new DvdDAO();
        Dvd f3 = fdao.listarDvdsPorCodigoSocio(f2);

        System.out.println("Resultado 1: "+f3);

    } catch (SQLException ex) {
        System.out.println("OCORREU UM ERRO..." + ex);
        ex.printStackTrace();
    }
}
  • listarDvdsPorCodigoSocio should return a list of Dvd as opposed to only one Dvd, nay?

1 answer

-1

Now it’s like this in mine DAO:

public List<Dvd> listarDvdsPorCodigoSocio( Dvd f) throws SQLException {
    StringBuilder sql = new StringBuilder();
    sql.append("SELECT codigo, titulo, genero, descricaogenero, duracao, sinopse, idiomas, legenda, anodeproducao, socio_codigo ");
    sql.append("FROM dvd ");
    sql.append("WHERE socio_codigo = ? ");

    Connection conexao = FabricaDeConexao.conectar();

    PreparedStatement comando = conexao.prepareStatement(sql.toString());
    comando.setLong(1, f.getSocio().getCodigo());

    ResultSet resultado = comando.executeQuery();

    List<Dvd> retorno = new ArrayList<>();

    while(resultado.next()){
        final Dvd dvd = new Dvd();
        dvd.setCodigo(resultado.getLong("codigo"));
        dvd.setTitulo(resultado.getString("titulo"));
        dvd.setGenero(resultado.getString("genero"));
        dvd.setDescricaoGenero(resultado.getString("descricaogenero"));
        dvd.setDuracao(resultado.getDouble("duracao"));
        dvd.setSinopse(resultado.getString("sinopse"));
        dvd.setIdioma(resultado.getString("legenda"));
        dvd.setAnoProducao(resultado.getInt("anodeproducao"));
        dvd.setTitulo(resultado.getString("socio_codigo"));
        retorno.add(dvd);
    } 
    return retorno;
}

And so I’m wearing:

public void listarOsPropriosDvds(){
    AdicionarSocioVisao e = new AdicionarSocioVisao();
    e.solicitarCodigoUsuario();

    Dvd find = new Dvd();
    find.setSocio(e);

    try {
        DvdDAO fdao = new DvdDAO();
        List<Dvd> resultado = fdao.listarDvdsPorCodigoSocio(find);

        for(Dvd d: resultado) {

            System.out.println(String.format("Resultado "+ d));
        }
    } catch (SQLException ex) {
        System.out.println("OCORREU UM ERRO..." + ex);
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.