@Override
 public Contato getContato(int cdContato) throws Exception {
   sql = new StringBuilder();
   sql.append("select * from Contato where cdContato=?");
   Contato contato = null;
   try {
     cn = FabricaDeConexao.getConnection();
     stmt = cn.prepareStatement(sql.toString());
     stmt.setInt(1, cdContato);
     System.out.println(stmt);
     rs = stmt.executeQuery();
     ITelefoneDAO telefoneDAO = new TelefoneDAO();
     IEmailDAO emailDAO = new EmailDAO();
     while (rs.next()) {
       contato = new Contato();
       contato.setCdContato(rs.getInt("cdContato"));
       contato.setNmContato(rs.getString("nmContato"));
       contato.setNmCaminhoFoto(rs.getString("nmCaminhoFoto"));
       contato.setNmLogin(rs.getString("nmLogin"));
       contato.setEmails(emailDAO.getEmailsContato(contato.getCdContato()));
       contato.setTelefones(telefoneDAO.getTelefonesContato(contato.getCdContato()));
     }
   } catch (SQLException e) {
     throw e;
   } finally {
     fecharConexoes();
   }
   return contato;
 }
 @Override
 public List<Contato> consultar(String colunas, String condicao) throws Exception {
   sql = new StringBuilder();
   sql.append("select ? from Contato where ?");
   List<Contato> contatos = null;
   try {
     cn = FabricaDeConexao.getConnection();
     st = cn.createStatement();
     String sql2 = sql.toString().replace("?", colunas).replace("?", condicao);
     System.out.println(sql2);
     rs = st.executeQuery(sql2);
     contatos = new ArrayList<Contato>();
     Contato contato = null;
     ITelefoneDAO telefoneDAO = new TelefoneDAO();
     IEmailDAO emailDAO = new EmailDAO();
     while (rs.next()) {
       contato = new Contato();
       contato.setCdContato(rs.getInt("cdContato"));
       contato.setNmContato(rs.getString("nmContato"));
       contato.setNmCaminhoFoto(rs.getString("nmCaminhoFoto"));
       contato.setNmLogin(rs.getString("nmLogin"));
       contato.setEmails(emailDAO.getEmailsContato(contato.getCdContato()));
       contato.setTelefones(telefoneDAO.getTelefonesContato(contato.getCdContato()));
       contatos.add(contato);
     }
   } catch (SQLException e) {
     throw e;
   } finally {
     fecharConexoes();
   }
   return contatos;
 }
 @Override
 public List<Contato> consultar(int inicio, int qtRegistros) throws Exception {
   sql = new StringBuilder();
   sql.append("SELECT * FROM Contato");
   sql.append("LIMIT ?, ?");
   List<Contato> contatos = null;
   try {
     cn = FabricaDeConexao.getConnection();
     stmt = cn.prepareStatement(sql.toString());
     stmt.setInt(1, inicio);
     stmt.setInt(2, qtRegistros);
     System.out.println(stmt);
     rs = stmt.executeQuery();
     contatos = new ArrayList<Contato>();
     Contato contato = null;
     ITelefoneDAO telefoneDAO = new TelefoneDAO();
     IEmailDAO emailDAO = new EmailDAO();
     while (rs.next()) {
       contato = new Contato();
       contato.setCdContato(rs.getInt("cdContato"));
       contato.setNmContato(rs.getString("nmContato"));
       contato.setNmCaminhoFoto(rs.getString("nmCaminhoFoto"));
       contato.setNmLogin(rs.getString("nmLogin"));
       contato.setEmails(emailDAO.getEmailsContato(contato.getCdContato()));
       contato.setTelefones(telefoneDAO.getTelefonesContato(contato.getCdContato()));
       contatos.add(contato);
     }
   } catch (SQLException e) {
     throw e;
   } finally {
     fecharConexoes();
   }
   return contatos;
 }
 @Override
 public List<Contato> getContatosUsuario(int pagina, int qtContatosPagina, Usuario usuario)
     throws Exception {
   sql = new StringBuilder();
   sql.append("select * from Contato where nmLogin like ? limit ?, ?");
   int inicio = (pagina - 1) * qtContatosPagina;
   List<Contato> contatos = null;
   try {
     cn = FabricaDeConexao.getConnection();
     stmt = cn.prepareStatement(sql.toString());
     stmt.setString(1, usuario.getNmLogin());
     stmt.setInt(2, inicio);
     stmt.setInt(3, qtContatosPagina);
     System.out.println(stmt);
     rs = stmt.executeQuery();
     contatos = new ArrayList<Contato>();
     Contato contato = null;
     ITelefoneDAO telefoneDAO = new TelefoneDAO();
     IEmailDAO emailDAO = new EmailDAO();
     while (rs.next()) {
       contato = new Contato();
       contato.setCdContato(rs.getInt("cdContato"));
       contato.setNmContato(rs.getString("nmContato"));
       contato.setNmCaminhoFoto(rs.getString("nmCaminhoFoto"));
       contato.setNmLogin(rs.getString("nmLogin"));
       contato.setEmails(emailDAO.getEmailsContato(contato.getCdContato()));
       contato.setTelefones(telefoneDAO.getTelefonesContato(contato.getCdContato()));
       contatos.add(contato);
     }
   } catch (SQLException e) {
     throw e;
   } finally {
     fecharConexoes();
   }
   return contatos;
 }